2014-09-09 10 views
1

저는 새로운 노드가 DOM에 삽입 된 후 DOM에 새로운 요소를 추가하려고 시도하면서 jQuery를 처음 사용하고 있습니다.동적으로 생성 된 div에 숨겨진 div 추가하기

투표가 있다고 가정 해 봅니다. 사용자가 투표 한 후 투표가 포함 된 div에 .voted 클래스의 새 div가 삽입됩니다. 이 새로운 div가 DOM에 추가되었을 때만 삽입하고 표시하고 싶은 숨겨진 div가있는 경우 이것이 가능합니까?

내가 jQuery를 사이트에 대한 연구를하고있다 그리고 지금까지 내가 생각 해낸 가장 가까운는 다음과 같이이었다 :

$('.hidden-div').livequery(function() { 
    appendTo('.voted'); 
}); 

내 사이트에이를했지만, 예상대로, 그것은 'didn를 일하지 마라. jQuery를 사용하여이를 달성 할 수있는 방법이 있습니까?

편집 :

사용자가 투표를하기 전에 : 사용자 후

<div id="poll"> 
    (poll here) 
</div> 
<div id="hidden-div" style="display:none">content</div> 

가 투표했습니다

<div id="poll"> 
    <div class="voted"> 
     (some content here)        <-- in here----------| 
    </div>                 | 
</div>                  | 
<div id="hidden-div" style="display:none">content</div> <-- I want this div..| 
+0

그래서 두 개의 새 div를 삽입하고 있습니까? 아니면 숨겨진 div가 이미 존재합니까? 마크 업을 포함한 모든 관련 코드를 제공하십시오. –

+0

Plz, 모든 Html, javascript 및 css로 [fiddle] (http://jsfiddle.net/)을 게시하십시오. –

+0

@Chris 사실, 설문 조사 플러그인에서 추가 할 새 div ('.voted')는 하나뿐입니다. ('.hidden-div')가 이미 존재합니다. 더 나은 아이디어를 제공하기 위해 마크 업의 단순화 된 버전을 삽입했습니다. – J82

답변

0

당신은 append()을 사용할 수 있습니다 : 여기에 마크 업의 단순화 된 버전입니다

var html = '<div id="hidden-div">content</div>'; 
$('.append').click(function() { 
    $('.voted').append(html); 
}); 

데모 목적으로 트리거를 클릭으로 변경했습니다. 그러나 트리거는 필요한 모든 것이 될 수 있습니다. 콘텐츠는 voted div 내에 배치됩니다. 이 지속적 클릭에 HTML을 추가 할 것

JS Fiddle Demo

참고. 여러 번 추가되지 않도록하려면 페이지에있는 요소의 수를 계산하는 .length을 사용하십시오.

$('.append').click(function() { 
    if($('#hidden-div').length == 0){ 
     $('.voted').append(html); 
    } 
}); 
+0

안녕하세요 댄, 코드를 시도했지만 div가 추가되지 않았습니다. 이상한. 나는 그걸로 놀려고 노력할 것이다. – J82

+0

그것은 추가되지만 페이지의 아무 것도 보이지 않도록 숨겨집니다. 나는 당신의 예제 w /'display : none'을 사용하고 있었다. – Dan

+0

'display : none'없이 업데이트 된 예제를 보자 : http : // jsfiddle.net/0711fz2f/1/사용자가 여러 번 클릭하면 여러 번 추가됩니다. – Dan

관련 문제