如果我像这样在循环中创建一堆对象:
for(var i = 0; i < 5; i++)
{
var data = { val: i * 2 };
var obj = $('<li>Item</li>');
$("ul").append(obj);
obj.click(function()
{
alert(data.val);
// Output is 8 for all items.
});
}
我只能访问处理程序中最后创建data
的对象.click()
。
如何data
在我的处理程序中引用相关对象 - 与单击 jQuery 对象同时创建的对象?
过去,我可以通过在 jQuery 对象上分配随机属性.attr()
来保存数据,而不是单独的对象,从而解决这个问题,但我想摆脱这种方法。
我也试过这个,但没有运气:
var data = { val: i * 2 };
var obj = $('<li>Item</li>');
obj.data = data;
obj.click(function()
{
// 'data' is undefined here i.e. not associated with $(this).
alert($(this).data.val);
});