我正在尝试运行以下代码:
我将参数传递给函数,但它始终具有循环中运行的最后一个对象的值。我在 stackoverflow 上阅读了一些有关它的文章,但我找不到如何使其在我的解决方案中运行。
该对象是从服务器返回的 JSON 对象。它的所有值都是正确的。
for(var i = 0;i<parents.length;i++){
var row = $(document.createElement("tr"));
var colName = $(document.createElement("td"));
var aDisplayCol = $(document.createElement("a"));
var parentId = parents[i]['PARENT_ID'];
aDisplayCol.attr("href","#").html(parents[i]['NAME']);
aDisplayCol.bind('click',function(){ alert(parentId);});
colName.append(aDisplayCol);
row.append(colName);
$('#pages tbody').append(row);
}
Thanks
这是一个范围问题。当事件处理函数执行时,值parentId
已经改变,不再是你所期望的那样。
这可以通过另一个函数返回原始事件处理函数来解决,该函数又传递以下值parentId
作为参数:
function getEventHandlerFunction(id){
return function() {
alert(id); // variable found in the closure with the expected value
};
}
aDisplayCol.bind('click', getEventHandlerFunction(parentId));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)