2013-05-18 3 views
2

event.stopPropagation()을 사용하고 있지만 부모에게 .live() 처리기를 사용하는 데 문제가 있습니다.라이브 처리가 event.stopPropagation()에서 작동하지 않습니다.

//does not work 
$("#testlink").live({ 
    click: function(event) 
    { 
     alert('testlink'); 
    } 
}); 

//works great! 
$("#testlink").click(function() { 
    alert('testlink'); 
}); 

나는 내용이 AJAX와로드되어 있기 때문에 .live()을 사용해야합니다.

누군가가이 문제를 해결할 수 있습니까?


내가 어떻게이 같은 더 클래스 나 ID를 사용할 수 있습니까?

$('#div1', '#div2', '#div3').on('click', 'a.testlink', function(){ 
    alert('testlink'); 
}); 

어떻게 가능합니까?

+2

'live()'는 더 이상 사용되지 않습니다. 대신'.on()'을 사용하십시오. http://api.jquery.com/on/ – techfoobar

답변

2

사용 on() (@techfoobar 언급했듯이, live()가 버전 1.7에서 사용되지 않으며 버전 1.9로 제거) 컨텐츠가 동적으로 생성되는 경우, 이벤트 위임 : #container는 동적 함유 원소

$('#container').on('click', '#testlink', function(){ 
    alert('testlink'); 
}); 

#testLink 요소를로드했습니다 (document을 사용할 수 있지만 여기서 컨테이너 요소를 사용하면 검색 범위가 줄어들고 효율성이 높아짐).

+0

최상의 해결책은 여기서'# container' 요소를 사용하는 것입니다. 이것은 이벤트를'# container' 엘리먼트 내의 모든 링크에 첨부 할 것이고, 전체'document' 엘리먼트 트리를 검사하고 효율성을 높이는 범위를 줄여줍니다. –

+0

@PalashMondal 물론, OP가 충분한 세부 정보 (또는 어떤 종류의 마크 업도)를 제공하지 않았기 때문에'# container' 엘리먼트가 현재 무엇인지 모르겠습니다 :) – lifetimes

+0

최소한 당신은 당신의 대답에 그것을 게시 할 수 있습니다. 제안 :) –