JQuery
동적 객체 추가시 이벤트 발생
나레이
2014. 6. 1. 13:57
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!");
});