2013-07-03 2 views
1

jQuery 모바일 웹 사이트에 일부 버튼을 동적으로 생성하고 있습니다. 나는이 만드는 것과 같은 방법으로 생성 : 여러 버튼에 대한 하나의 .click 이벤트 핸들러

$('#Gallery' + i + ' .gallery').after('<button type="button" class="loadMorePhotos">More Photos...</button>'); 

그런 다음 나는이 같은 간단한 .click 이벤트 핸들러 작성 : 나는이 버튼을 식별 할 id 속성을 사용하지 않는만큼 신중했다

$(".loadMorePhotos").click(function(){ 
      alert("ok malaka!"); 
}); 

을, 여러 개의 단추가있어 상황이 엉망이됩니다. 대신 나는 내가 이해할 때까지 작동해야하는 class 속성을 사용합니다.

그러나 경고는 실행되지 않습니다. 내가 여기서 뭘 잘못 할 수 있니?

+0

당신이 확실 요소가 삽입 된 후 * 이벤트 처리기를 바인딩하고 있습니까? 이 두 문장의 관계를 보여주는보다 완벽한 예제를 게시하십시오. –

+0

[동적으로 생성 된 요소에 의해 트리거 된 이벤트는 이벤트 처리기에서 캡처 할 수 없습니다] (http://stackoverflow.com/questions/12829963/events-triggered-by-dynamically-generated-element-are-not-captured-by -event-hand) –

+0

@Felix를 편집하고 또 다른 매우 유용한 질문을 지적 해 주셔서 대단히 감사합니다. 건배! –

답변

6

이벤트 위임 : 당신의 요소를 동적으로 생성되기 때문에, 이미 DOM 준비에 존재하는 요소에 클릭 핸들러를 바인드 할 필요가

$(document).on("click", ".loadMorePhotos", function(){ 
     alert("ok malaka!"); 
}); 

(이 경우, document)

+1

(+1) 더 빨라졌습니다! :) – Alvaro

+2

또는 이벤트 처리기를 만든 후에 요소에 바인딩합니다. –

+0

고맙습니다. 나는 그것을 깨닫지 못했다. 그러나 지금 나는 이해한다! :디 –

관련 문제