0

テーブルの行にいくつかのプロパティを追加したいと考えています。テーブルは、サーバーから返されたデータからオンザフライで作成されます

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 を使用する方法を具体的に知りたいと思っています)。

4

2 に答える 2

1

person_idDOM要素ではなく、jQueryコレクションオブジェクトに設定しています。jQueryに相当するものはrow.prop('person_id', person.person_id);です。

とはいえ、DOM要素とともにランダムなデータを保持するには、attr()またはdata()

于 2012-05-13T15:12:32.227 に答える
1

これ

row.person_id = person.person_id; 

する必要があります

row[0].person_id = person.person_id; 

rowjquery ラッパーですが、row[0]DOM 要素です。

于 2012-05-13T15:14:39.827 に答える