2011-09-21 5 views
1

여기에 약간의 문제가 있습니다. 내 사이트에 게시물 스트림이 있습니다. 각 게시물에는 이제 내 $(document).ready()에 설치되는 다른 작업을 실행하는 버튼이 있습니다. 게시물을 추가하려면 새 게시물 요소에 대한 html을 반환하는 AJAX 호출을 작성하십시오. 그러나 이전의 작업 $(document).ready()은이 새 요소에 적용되지 않고 요소에 대해 $(document).ready()에 추가하면 이미 게시 된 요소의 단추가 복제됩니다.AJAX를 통해 추가 된 DOM 요소에 액션 추가

어떻게 이런 생각을 할 수 있습니까?

답변

3

documnet 준비 이벤트 이후에 추가 된 요소는 바인딩 이벤트 (사용자가 호출 함)를 허용하지 않습니다. .click() 또는 .hover() 또는 .bind('click', function(){})을 사용할 수 있으며 어느 것도 작동하지 않을 수 있습니다. 당신은 delegate 당신이 click에 대한 live를 사용할 때 때문에 훨씬 더 사용 jQuery를 .live() 또는 .delegate()

을 사용할 수 있습니다 (예를 들어) 어디 찾고 click 것이 있다면 you'r이 문서에서 일어나는 모든 click을 듣고 결정하는 의미 안 그래? 그러나 delegate을 사용하면 컴퓨터가 처리하는 클릭 수를 귀하의 click으로 제한 할 수 있습니다. 당신이이 DOM이로드 된 후 그들이 추가되는 경우에도 .. 그 선택 일치하는 모든 요소에 이벤트를 추가한다 $(selector).live(eventType, handler)를 사용하는 경우

$('.myinput').live('click', function(){ 
    // do something if a click happened and it was on my input 
}) 

$('.myDiv').delegate('.myinput', 'click', function(){ 
    // do something if a click happened in my div and it was on my input 
}) 
+0

도 사용 – 8vius

0

가 있었다 말했다 방법을 사용하여 .live() 지금 그것을 depreciated 사용하여 해결할 수 있습니다.

감가 상각 방법을 변경하는 방법?

$(selector).live(events, data, handler);    // jQuery 1.3+ 
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+ 
$(document).on(events, selector, data, handler);  // jQuery 1.7+ 

링크 : jQuery .live() 내가 thesame 문제와 "CSTE 연구진은"이 마지막이 있었다

나를 위해 잘 작동합니다.

어쩌면 누군가 thesame 문제를 가지고 위임 방법은 새로 추가 된 DOM 요소와 액션을 활성화하지 않은 작동하지 않았지만, 라이브 방법은, 감사 않았다

관련 문제