До этого момента я мало что делал в javascript. Недавно я начал играть с jQuery и наткнулся на учебник о том, как Редактировать на месте в форме.
Полученный код отлично работает, если вы жестко закодировали идентификатор вашего контейнера div в функции, но у меня возникают проблемы при его обобщении для идентификатора, переданного функции.
Код начинается так:
$(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'));
}
У меня возникли проблемы с последним вызовом setClickable
внутри функции saveChanges
. Если я жестко закодирую значение $('#editInPlace')
, оно работает нормально. Однако, если я изменю сигнатуру функции на
function saveChanges(target, obj, cancel)
и передать целевой объект из метода setClickable:
$('.buttonB').click(function() { saveChanges(target, this, true); });
звонит
setClickable(target);
, похоже, не работает, и я не могу понять, почему.