2013-03-27 1 views
0

JavaScript에서 요소를 업데이트하는 데 문제가 있습니다. 내 프로젝트는 상당히 복잡하지만 여기에 아주 작은 부분이 있습니다.jQuery data()를 사용하여 요소 속성을 설정할 수 없습니다.

myWebService(/*...*/) 
.done(function (result) { 
    var newRows = $(rows).clone(); 
    $('#drop-placeholder').after(newRows); 
    $(newRows).data('test', 'ZZZZZZZZZZZZZZZZZZZZZZZ'); 
} 

Chrome을 사용하면 이러한 명령문을 실행할 수 있습니다. 그러나 조사 식 창에서 newRows을 사용하면 특성이 추가/업데이트되지 않는다는 것을 알 수 있습니다. 그리고 호출이 완료된 후에도 내 페이지에 지정된 속성이 표시되지 않습니다.

내가 누락 된 부분을 누구든지 볼 수 있습니까? rows (따라서 newRows)은 임의의 수의 테이블 행 요소를 나타냅니다.

+1

FYI,'newRows'는 이미 jQuery 객체입니다. 다시 jQuery *로 전달할 필요가 없습니다. * "내 페이지에 지정된 속성이 보이지 않습니다"*는 무엇을 의미합니까? 어떻게 그것을 "보려고"합니까? –

+0

'newRows.data()'를 할 수 있다고 말하는거야? 나는'$()'이 나에게 추가적인 옵션을 주었다고 생각했다. (크롬의 요소를 검토하여이를 보려고했습니다.) –

+0

예. '.clone'은'$()'와 마찬가지로 jQuery 객체를 반환합니다. 이미 jQuery 객체가 있다면'$()'에 다시 전달할 필요가 없습니다 ('rows'에 대해서도 마찬가지 일지 모르지만 그게 무엇인지는 모르겠습니다). 일반적으로'$ ('div')'대신'$ ('div')'를 쓰겠습니다. :) –

답변

7

.data()은 순수하게 jQuery에 의해 처리되는 배경 데이터를 설정합니다. HTML 속성을 설정하지 않습니다.

data-test과 같은 속성을 <div data-test="stuff"></div>에 설정하려는 경우 .attr("data-test", variable)을 사용해야합니다.

+0

당신은 절대적으로 맞습니다. 나는 이것을 결코 깨닫지 못했다. 지금 일하십시오, 고마워요. –

2

data을 jQuery를 통해 .data()으로 설정하면에 기본 데이터 저장소 만 설정됩니다. 속성을 변경하려면 .attr()을 사용해야합니다.

관련 문제