由于搜索,我生成了一些列表项,我想从搜索中将一些数据附加到每个列表元素(可能是合并ui和数据的坏主意),但现在对此感到好奇。我这样做:
var element = $("<li>Hello</li>);
element.mydata = "foo";
element.appendTo("#panelParent");
所以我只是将我的东西分配给element.mydata。我的点击处理程序报告单击时该元素不存在此类数据:
$('#panelParent').delegate('li', 'click', function() {
// this.mydata is undefined.
});
它去哪儿了?我可以将数据保存在列表项元素的外部,想知道是否有一种方便的方式来保持它的约束?
由于
答案 0 :(得分:1)
您是在jQuery对象上设置它,而不是在DOM元素上设置它。这样做:
var element = $("<li>Hello</li>");
element[0].mydata = "foo";
element.appendTo("#panelParent");
执行此操作的标准jQuery方法是:
var element = $("<li>Hello</li>");
$(element).data('mydata', 'foo');
// access it
alert( $(element).data('mydata') )
答案 1 :(得分:0)
由于你正在使用jQuery,你也可以使用jQuery.data()让框架处理浏览器怪癖,即IE6中的内存泄漏。