jQuery 청취 플러그인 이벤트를 복제하는 방법은 무엇입니까?
-
21-08-2019 - |
문제
나는 약간있다 <tr>
내 페이지의 요소 a click()
이벤트는 각각 내부에 앉아있는 이미지에 첨부 된 이벤트입니다. 이 코드를 사용합니다
$(this).clone(true).appendTo("table#foo");
다음을 수행하려면 :
- 그것들을 복사하십시오
<tr>
다른 테이블에 s - 내부의 이미지에 대한 클릭 이벤트를 보존하십시오
<tr>
s (true
논쟁)
그 모든 것이 잘 작동합니다. 이제 나는 추가했다 jQuery 듣기 그것들에게 이벤트 <tr>
s, 사용자가 정확하게 목표를 조준 할 필요가 없도록 : <tr>
클릭을 이미지로 전달할 수 있습니다.
다음과 같이 코딩됩니다.
$('tr.record').listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
Listen () 이벤트는 원래 항목에서 잘 작동하지만 복제 된 항목에서 Listen () 이벤트가 실패합니다. 이미지의 클릭 이벤트는 여전히 잘 작동합니다.
Firebug가 나에게 말하는 것은 다음과 같습니다.
m(this, e.type) is undefined
... 그리고 그것은 jquery.listen-1.0.3-min.js의 9 행을 참조합니다.
복제 된 요소에서 Listen () 이벤트를 어떻게 만들 수 있습니까?
업데이트
기본적으로 jQuery는 복제 된 요소에 이벤트를 복사하지 않지만 이 플러그인 그렇게하도록 만들어졌습니다.
한편, Listen () 플러그인의 저자는 다른 전략을 제안했습니다. 아래의 대답을 참조하십시오.
해결책
Listen () 플러그인의 제작자 인 Ariel Flesler는 이메일을 통해이 조언을주었습니다.
"이것은 다른 방식으로 해결 될 수 있다고 생각합니다. 듣기 (및 이벤트 대표단)라는 아이디어는 실제로 새로운 요소에 대한 모든 이벤트를 복사하는 것을 피하는 것입니다."
"당신은 단순히 할 수 있습니다 :"
$('table#foo').listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
"또는:"
$.listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
"첫 번째 예제는 테이블을 리스너로 사용합니다. 두 번째 예에서는<html>
태그가 사용됩니다. 따라서 새로운 TD/TR/테이블을 추가하더라도 상관 없습니다. 여전히 작동합니다. "