2012-05-13 5 views
0

테이블 행에 몇 가지 추가 속성을 추가하고 싶습니다. 테이블은 서버jquery expandos

에서 반환 된 데이터에서 실시간으로 생성 된 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'), Javascript 객체뿐만 아니라 JS가없는 경우이 구문이 작동합니다. jQuery와 다른 일이 벌어지고있다.

(참고로이 문제를 해결할 수있는 여러 가지 방법이 있지만 교육 목적으로 확장 성 및 jQuery로 작업하는 방법을 알고 싶습니다.)

답변

1

DOM 요소가 아닌 jQuery 컬렉션 객체에 person_id을 설정하고 있습니다. jQuery에 해당하는 값은 row.prop('person_id', person.person_id);입니다. 말했다

는이

row.person_id = person.person_id; 

row[0].person_id = person.person_id; 

row jQuery를 래퍼입니다해야 당신이 attr() 또는 data()

1

를 사용해야 DOM 요소와 함께 데이터의 임의의 비트를 보존하기 그러나 row[0]은 DOM 요소입니다.