到目前为止,我对 javascript 的了解还不多。我最近开始玩 jQuery 并遇到了一个关于如何做的教程 Edit in Place在表格上。
如果您在函数中对容器 div 的 ID 进行硬编码,生成的代码将完美运行,但我在将其泛化为传递给函数的 ID 时遇到了问题。
代码是这样开始的:
$(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'));
}
我遇到问题的部分是在 saveChanges
函数中对 setClickable
的最后一次调用。如果我对 $('#editInPlace')
的值进行硬编码,它就可以正常工作。但是,如果我将函数签名更改为
function saveChanges(target, obj, cancel)
并从 setClickable 方法中传入目标对象:
$('.buttonB').click(function() { saveChanges(target, this, true); });
打电话
setClickable(target);
似乎不起作用,我也不知道为什么。
最佳答案
改变:
function setClickable(target)
{
$(target).click
(
到:
function setClickable(target)
{
target.click
(
您传入一个包装集(也称为 jQuery 对象),然后将其包装在另一个包装集中。以上解决了这个问题。另一种方法是:
$(document).ready(function() {
setClickable('editInPlace');
});
function setClickable(id)
{
$("#" + id).click
(
你明白我的意思了吗?
关于javascript - jQuery/javascript 对象传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705473/