2010-12-17 1 views
1

div 요소를 동적으로 만들고이를 data()에 연결합니다. 선택기를 통해 다시 액세스 할 때 데이터를 반환하지 않습니다. 아래의 스 니펫 결과로 '1'데이터와 'null'값이있는 첫 번째 알림이 표시됩니다. 누군가 제발 도와 줄 수 있어요.JQuery에서 요소를 동적으로 생성하고 데이터를 첨부해도 selector를 사용하여 data()를 다시 호출 할 때 값을 반환하지 않습니까?

var dc = 0; 
$("#attachData").click(function() { 
     dc++; 
    var newDiv = jQuery('#oldid').clone(); 
    newDiv.attr('id', 'dt'+dc); 
    jQuery.data(newDiv, "dd", '1') 

    alert(jQuery.data(newDiv, "dd")); 

var divFromSelector = $('#dt'+dc); 
alert(jQuery.data(divFromSelector, "dd")); 
}); 

미안 해요, 스 니펫에 추가하지 않았다하지만이 나무에 부착 : 또한

newDiv.attr('id', 'dt'+dc). 
appendTo('#workspace-container'); 

나는 그것이 요소가 제대로 반환됩니다 선택기를 사용하여 액세스를 시도 -하지만 데이터가 없습니다.

답변

0

액세스하는 DOM에 새 노드를 연결하지 않은 것 같습니다. http://api.jquery.com/clone/

+0

문제가되지 않습니다. 원래 게시물을 수정하십시오. 줄 바꿈을 사용하고 모든 줄 4 줄을 들여 쓰기하여 "코드"블록을 나타냅니다. –

+0

Dave - 답변 해 주셔서 감사합니다. 노드에 연결했습니다. 이것에 대한 통찰력이 도움이 될까요? – user545503

+0

@ sje397에서 위의 응답을 보니 기꺼이 해결되었습니다. 동의 한 답을 표시하십시오. –

1

봅니다 : the docs에서

var dc = 0; 
$("#attachData").click(function() { 
    dc++; 
    var newDiv = jQuery('#oldid').clone(); 
    newDiv.attr('id', 'dt'+dc).appendTo('#workspace-container'); 
    jQuery.data(newDiv[0], "dd", '1') 

    alert(jQuery.data(newDiv[0], "dd")); 

    var divFromSelector = $('#dt'+dc); 
    alert(jQuery.data(divFromSelector[0], "dd")); 
}); 

JQuery.data 방법은 DOM 요소가 아닌 JQuery와 객체를 기대하는 것 같다. [0]을 JQuery 객체에 추가하면 래핑하는 DOM 요소가 제공됩니다.

newDiv.data(...)divFromSelector.data(...)을 사용하면 더 좋을 것입니다.

데모 here.

+0

그게 큰 도움이됩니다. 첫 번째 경고가 실제로 JQuery 객체를 전달했지만 다음 번에 전달하지 않은 경우에도 실제로 데이터를 반환하기 때문에 혼란 스러웠습니다. 이것은 내 문제를 해결합니다. 고마워. – user545503

관련 문제