appendTo를 이용해 객체를 동적 추가 시  $(document).ready(function() 에 선언해 놓은 이벤트들이 작동하지 않을 수 있다.

 

예를들어 다음과 같은 코드가 있다.


<ul id="list">

<li class="alert">클릭</li>

<li class="alert">클릭</li>

<li class="alert">클릭</li>

</ul>


<a href="#none" class="add">추가</a>


<script type="text/javascript">


$(document).ready(function() {

$(".alert").click(function() {  

        alert("Hello!");

});


$(".add").click(function() {  

        $("<li class=\"alert\">클릭</li>").appendTo("#list");

});


});


</script>


추가를 클릭할때마다 li태그가 추가가 되는데 기존의 세개 li를 클릭하면 알럿창으로 Hello를 출력하지만

새로 추가된 li를 클릭하면 변화가 없다. 즉 document.ready에서 문서가 로딩될때 있었던 세개의 li에만 클릭이벤트가 적용된 것이다.

그렇다면...새로 추가된 li에 이벤트를 적용하고 싶다면?

live를 추가해주면 된다. 어떻게?

이렇게!


$(".alert").live("click", function(){

alert("Hello!");

});



'JQuery' 카테고리의 다른 글

live(), on(), delegate()  (0) 2014.06.25
여러개의 이름을 가진 class에 이벤트 적용  (0) 2014.06.01
IE에서 FormData가 안먹을때  (0) 2014.03.03
동적 행 추가 (clone, append)  (0) 2014.02.24
ajax로 파일업로드하기  (1) 2014.02.20

+ Recent posts