2014-01-12 3 views
0

해결할 수있는 (아마도) 매우 쉬운 문제가 있습니다. 그러나 무엇이 잘못되었는지 알 수 없습니다. .click() jquery를 실행하려고 시도하지만 트리거하지 않습니다. 실제로 DOM 항목은 자바 스크립트로 동적으로 생성되기 때문에 (그것이 중요할까요?)jquery .click가 트리거되지 않습니다.

동적으로 생성 된 내용은 다음과 같습니다

<div class="rPics"> 
    <div class="class"> 
     <canvas id="canSSJ01" class="thumbCan" width="600" height="720"></canvas> 
     <p class="cDID hidden">SSJ01</p> 
    </div> 
    <div class="class"> 
     <canvas id="canSSJ02" class="thumbCan" width="600" height="720"></canvas> 
     <p class="cDID hidden">SSJ02</p> 
    </div> 
</div> 

자바 스크립트 :

$('.class').click(function(){ 
    globalJID = $(this).children(".cDID").text(); 
    console.debug("clicked thCC: "+globalJID); 
}); 

내가 크롬을 확인할 때 지금, 그것은 전혀 .click 기능을 트리거하지 않습니다 :(

무엇 오전 내가 잘못하고있다?

+2

이벤트 위임. Google 그것 – megawac

+1

http://learn.jquery.com/events/event-delegation/ –

답변

2

가까운 정적 컨테이너와 바인딩 이벤트 당신은 jquery .on() method와 함께 이벤트 위임을 사용하여 동적으로 생성된다 live

$(document).live('click', function(){ 
+0

안녕하세요. 귀하의 답변은 훌륭하지만, 귀하가 감사를 표하거나 "모든 사람들에게 도움이되기를 바랍니다"라고 요청할 수 있습니까? 그들은 어쨌든 [일반적으로 편집]됩니다 (http://meta.stackexchange.com/questions/34464/questions-with-lots-of-thank-you-answers). – halfer

2

요소가 동적으로 생성되면, se

$(document).on('click', '.class', function() { 

또한 클래스 이름을 class으로 다시 생각해 볼 수 있습니다.

설명서는 을 참조하십시오. 비슷한 질문은 here을 참조하십시오.

+0

클래스의 이름이 여기에 실제 클래스 이름을 쉽게 읽을 수 있도록 변경되었습니다 thumbCanCon ..하지만 난 쉽게 볼 수있을 것이라고 생각했다 ' 수업이 짧고 맑을 때 이야기 함. –

+0

@TomaszGolinski - 좋아요, 그 이름이 수업이 아니란 걸 듣게되어 기쁩니다. – acarlon

2

.on() 방법을 사용하고 동적으로 생성 된 요소에 대해 event delegation을 배워야합니다. 당신이 명곡 JQuery와 버전의 경우

$(document).on('click', '.class', function(){ //Here use `on` 
    globalJID = $(this).children(".cDID").text(); 
    console.debug("clicked thCC: "+globalJID); 
}); 

, 당신은 동일한 작업을 수행 할 수있는 항목으로

$(document).on('click', '.class', function(){ 
    globalJID = $(this).children(".cDID").text(); 
    console.debug("clicked thCC: "+globalJID); 
}); 
관련 문제