2011-09-09 3 views
0

"selectimage"클래스로 div에 이미지를 추가하는 click 기능이 있습니다. 나는 "selectedimage"를 참조하는 다른 클릭 기능을 만들려고하지만, 시작되지는 않습니다. 이것은 DOM이 처음로드되었을 때 존재하지 않았기 때문입니까? 감사.바운드 이벤트가 새로 생성 된 요소에 적용되지 않는 이유는 무엇입니까?

$(".articlethumb").bind('click', function() { 
var currentid = $(this).attr("id"); 
var medium = $(this).find(".thumb-medium").text(); 
var mediumimage = "<img id='" + currentid + "' class='selectedimage' src='" + medium + "' />"; 
$("#mainimage").html(mediumimage); 
}); 

$(".selectedimage").bind('click', function() { 
alert("test"); 
}); 
+0

:

는 "바인딩"모든 기존 및 미래의 요소에 이벤트, .live를 사용하려면'$를'훨씬 좋네요 ({})가 (기능)을 클릭합니다 ('articlethumb를.'). 바인딩 이벤트의 방법. – meagar

답변

1

.live을 사용하십시오.

$('.articlethumb').live('click',function(){ 
    your code here 
}) 

이벤트가 바인딩 될 때 dom에없는 요소와 관련이 있다고 의심되어 라이브로 수정됩니다.

+0

아름다운. 내가 이것을 어떻게 찾지 못했는지 모르겠다. 감사! –

1

"bind"를 사용하는 대신 "live"를 사용하십시오. 라이브를 제외하고 동일한 구문은 이벤트 핸들러를 기존의 일치 요소 및 향후 (아직 존재하지 않는) 일치 요소에 적용합니다.

1

.bind은 이미 DOM에있는 요소에만 영향을줍니다. 참고로

$('selector').live(click, function() { 

}); 
관련 문제