Jusqu'à présent, je n'ai pas beaucoup fait en javascript. J'ai récemment commencé à jouer avec jQuery et suis tombé sur un tutoriel sur la façon de faire Edit in Place sur un formulaire. Le code résultant fonctionne parfaitement si vous codez en dur l'identifiant de votre conteneur div dans la fonction, mais j'ai des problèmes pour le généraliser pour un identifiant passé à la fonction.Objet jQuery/javascript passant
Le code commence comme ceci:
$(document).ready(function() {
setClickable($('#editInPlace'));
});
function setClickable(target)
{
$(target).click
(
function()
{
//Do some dom manipulation
$('.buttonA').click(function() { saveChanges(this, false); });
$('.buttonB').click(function() { saveChanges(this, true); });
}
)
.mouseover(function() { $(this).addClass("editable"); })
.mouseout(function() { $(this).removeClass("editable"); });
}; //end of function setClickable
function saveChanges(obj, cancel)
{
//Handle the save changes code
//Reset the div
$(obj).parent().after('<div id="editInPlace">' + t + '</div>').remove();
//Call setClickable
setClickable($('#editInPlace'));
}
La partie que je vais avoir des problèmes avec est le dernier appel à setClickable
l'intérieur de la fonction saveChanges
. Si je code en dur la valeur de $('#editInPlace')
, cela fonctionne très bien. Cependant, si je change la signature de fonction
function saveChanges(target, obj, cancel)
et passe dans l'objet cible de la méthode setClickable:
$('.buttonB').click(function() { saveChanges(target, this, true); });
appelant
setClickable(target);
ne semble pas fonctionner et je Je n'arrive pas à comprendre pourquoi.
Vous pouvez regarder le plugin Jeditable, http://www.appelsiini.net/projects/jeditable ou le plugin modifiable, http://arashkarimzadeh.com/index.php/jquery/7-editable-jquery -plugin.html. – tvanfosson