2013-06-17 7 views
1

동적으로 생성 한 요소를 클릭하고 경고를 생성 할 수 있기를 원합니다. .on을 사용하는 방법에 대해 비슷한 스레드를 살펴 보았지만 정적 요소에서만 작동하도록 할 수 있습니다. 미리 감사드립니다!JQuery를 사용하여 동적으로 생성 된 HTML 요소를 클릭하십시오.

<span id="about">About</span> 

<div id="lhn"></div> 

그리고 자바 스크립트 :

$(document).ready(function() { 

    $("#about").click(function() { 

     $("#lhn").append("<div id='#child'>Child</div>"); 

     $("#lhn").on("click", "#child", function() { 
      alert("Child has been clicked"); 
     }); 

    }); 

}); 
+0

순서 스위칭을했다, 모두 감사합니다! 신분증 오타를 유감스럽게 생각합니다. – fergusrm

답변

3

바인드 당신의 about 클릭 핸들러 외부 이벤트입니다. 요소를 만들 때 또한, 귀하의 ID는하지 #childchild을해야한다 : 나는 요소를 추가하는 데 사용할

$(document).ready(function() { 
    $("#lhn").on("click", "#child", function() { 
     alert("Child has been clicked"); 
    }); 

    $("#about").click(function() { 
     $("#lhn").append("<div id='child'>Child</div>"); 
    }); 
}); 
0

한 기술은 다음 요소를 생성을 추가하는 것입니다.

var element = $("<div id='child'>Child</div>").appendTo("#lhn").on("click", function() { 
    alert("Child has been clicked"); 
}); 
1

작성한 코드에 여러 가지 문제가 있습니다.

는 첫째 둘째

$("#lhn").append("<div id='child'>Child</div>"); 

있어야

$("#lhn").append("<div id='#child'>Child</div>"); 

- HTML 페이지에서 ID 년대

그래서 대체 고유로되어있다

$("#lhn").append("<div id='child'>Child</div>"); 
난 당신이 이미 이벤트를 위임하는 볼, 그래서 click event 외부에 클릭 이벤트를 이동

$("#lhn").append("<div class='child'>Child</div>"); 

셋째

. 그렇지 않은 경우 이벤트는 모든 클릭에서 요소에 여러 번 바인딩됩니다..

$("#about").click(function() { 
    $("#lhn").append("<div class='child'>Child</div>"); 
}); 

$("#lhn").on("click", ".child", function() { 
    alert("Child has been clicked"); 
}); 
+0

하나의 자식 만 추가하는 경우에도 클래스가 아닌 ID를 사용하고 싶지 않습니까? – fergusrm

+0

만약 그것이 하나의 요소라면 'ID' –

+0

Cool과 함께 갈 수 있습니다. 아직도 배우고, 확실하게하고 싶었습니다. – fergusrm

0

사용이 간단한 코드,

$("#child).live("click",function(){ 
    alert(); 
}); 
관련 문제