テーブルの行にいくつかのプロパティを追加したいと考えています。テーブルは、サーバーから返されたデータからオンザフライで作成されます
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 を使用する方法を具体的に知りたいと思っています)。