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 |