2012-12-09 3 views
1

작동하지 않습니다하지만 난 내가 부족 모르는 :복제 DIV 내가 가까이있어 확신

내가 중단 점을 설정
var newId = 1; 
$("#trigger").click(function(){ 
    $("#new-div").attr('id', 'new-div' +newId++).clone().appendTo("#myDiv"); 
}); 

: 나는 카운터 자동차를 볼 수 있습니다 - 증가하지만, 복제 된 div는 어디에 있어야하는지 나타나지 않습니다. 나는 오류가 없다. 이를위한 HTML :

<div id="secret-div" style="display: none;"> 
     <div>This is new div number </div> 
     </div> 
     <p><a id="trigger" href="javascript:void(0);">Please, add an element</a></p> 
    <div id="myDiv"></div> 
+0

HTML을 게시 할 수 있습니까? – techfoobar

+0

방금 ​​누락되었습니다. 죄송합니다. – max7

+1

html에있는'# new-div'는 어디에 있습니까? – 3dgoo

답변

2

문제는 당신이 전에 요소의 ID를 변경하고 있다는 것입니다 복제 및 추가 작업을 수행하여 선택기와 코드를 깨고 같은 ID로 2 개의 요소를 생성합니다.

Fixed Live Demo

HTML :

<div id="secret-div" style="display:none;"> 
    <div>This is new div number <span class="spnNewDivNumber"></span></div> 
</div> 
<p><a id="trigger" href="javascript:void(0);">Please, add an element</a></p> 
<div id="myDiv"></div>​ 

자바 스크립트 :

var newId = 1; 
$("#trigger").click(function() { 
    var $newSecretDiv = $("#secret-div").clone().attr('id', 'new-div' + newId++); 
    $newSecretDiv.show().appendTo("#myDiv"); 
    $newSecretDiv.find('.spnNewDivNumber').text(newId - 1); 
});​ 
+0

내 원본 코드를 매우 효과적으로 확장했습니다. 사실, 3dgoo는 핵심 문제를 지적했습니다. # new-div를 제거하고 절대 교체하지 않았습니다! 체인 연결 순서도 잘못되었지만 첫 번째 오류는 기본 오류였습니다. 그럼에도 불구하고, 당신이 쓴 것은 훌륭했습니다. 질문 : var $ newSecretDiv의 사용법을 설명 할 수 있습니까? 특히 변수 설정에 $를 사용하는 이유와 jQuery 객체를 호출하지 않으면 작동하지 않는 이유는 무엇입니까? – max7

+2

변수 이름 앞에 $를 추가하는 이유는 해당 변수를 jQuery 객체로 명확하게 표시하기 위해서입니다. $가 없다면, 큰 해결책에서, 나는 이미 jQuery 객체라는 사실을 잊어 버리고 퍼포먼스를 떨어 뜨리는 불필요한 코드를 작성할 것이다. –

1

현재 코드는 복제 전에 새 ID를 적용합니다. 즉, 기존 div의 ID가 변경됩니다. 이는 다시 클릭 핸들러가 호출 될 때 selector '# new-div'와 일치하는 div가 없음을 의미합니다.

중 하나를 복제 한 후, 또는 DOM에 삽입 한 후 ID를 적용

보십시오 :

var newId = 1; 
$("#trigger").click(function(){ 
    $("#new-div").clone().attr('id', 'new-div' +newId++).appendTo("#myDiv"); 
}); 

또는

var newId = 1; 
$("#trigger").click(function(){ 
    $("#new-div").clone().appendTo("#myDiv").attr('id', 'new-div' +newId++); 
}); 
0

당신은 당신의 현재 사업부는 '새로운 사업부'라는 이름되지 않는 # 새로운 사업부를 복제하려고합니다. 또한 생성 된 ID를 사용하여 새 div를 작성하는 대신 원래 div의 ID를 변경하고 있습니다.

관련 문제