我想为表格行添加一些额外的属性。该表是根据从服务器返回的数据动态创建的
在 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)。