我想为表行添加一些额外的属性。该表是从服务器返回的数据中动态创建的
HTML上定义的表格:
然后,让我们假设我从服务器获得了一些json数据(简化数据):
people = [{name:"John Doe", person_id:"1234"}, {name:"Jane Roe", person_id:"5678"}]
我现在用以下代码填充表格(在我的ajax.done处理程序中):
for( i=0; i<people.length; ++i ) {
var person = people[i];
var row = $('<tr><td>' + person.name + '</td></tr>');
row.person_id = person.person_id; // <<=== HERE I'm trying to add the expando
row.click( clickHandler );
$('#myTable > tbody').append(row);
}
function clickHandler( ev ) {
row = ev.currentTarget; // This is fine
id = ev.currentTarget.person_id // HERE unable to get my expando
}
我几乎可以肯定,对于普通的HTML对象(即document.createElement('TR'),没有任何JS,以及Javascript对象,这种语法正在运行。使用jQuery还有其他功能。
(注意,有很多方法可以解决它,但出于教育目的,我真的想知道如何使用expandos和jQuery)。
答案 0 :(得分:1)
您在jQuery集合对象上设置person_id
,而不是DOM元素。 jQuery等价物是row.prop('person_id', person.person_id);
。
也就是说,要保留随机数据位以及DOM元素,您应该使用attr()
或data()
答案 1 :(得分:1)
这个
row.person_id = person.person_id;
应该是
row[0].person_id = person.person_id;
row
是jquery包装器,但row[0]
是DOM元素。