2012-05-13 1 views
0

テーブル行にいくつかの追加プロパティを追加します。 (データは簡体字)のは、私は、サーバーからいくつかのJSONデータをしたと仮定しましょう、そして、 jquery expandos

:データがサーバ

HTMLで定義されたテーブルから返されるからテーブルは、オンザフライで作成されます:

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の使い方を知りたがっています)。

答えて

1

person_idは、DOM要素ではなくjQueryコレクションオブジェクトに設定しています。 jQueryと同等のものはrow.prop('person_id', person.person_id);です。 attr()またはdata()

1

を使用する必要があります。この

row.person_id = person.person_id; 

row[0].person_id = person.person_id; 

rowあるべきDOM要素に加えて、データのランダムビットを維持するために、言わ

は、jqueryのラッパーですrow[0]はDOM要素です。

関連する問題