将数据分配给<li>元素?</li>

时间:2010-06-13 22:42:53

标签: jquery

由于搜索,我生成了一些列表项,我想从搜索中将一些数据附加到每个列表元素(可能是合并ui和数据的坏主意),但现在对此感到好奇。我这样做:

var element = $("<li>Hello</li>);
element.mydata = "foo";
element.appendTo("#panelParent");

所以我只是将我的东西分配给element.mydata。我的点击处理程序报告单击时该元素不存在此类数据:

$('#panelParent').delegate('li', 'click', function() {
    // this.mydata is undefined.
});

它去哪儿了?我可以将数据保存在列表项元素的外部,想知道是否有一种方便的方式来保持它的约束?

由于

2 个答案:

答案 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') )

文档@ http://api.jquery.com/jQuery.data/

答案 1 :(得分:0)

由于你正在使用jQuery,你也可以使用jQuery.data()让框架处理浏览器怪癖,即IE6中的内存泄漏。