2012-05-08 4 views
1

dom 요소에 클릭 짝수 처리기가 있습니다. 이 요소가 .cloneNode(true)를 복제되고 그것의 이벤트 핸들러를 :(손실이 jQuery 이벤트 핸들러를 유지하는 방법은 무엇입니까?

jQcurrentOption.click(function() { 
//IMPLEMENTATION 
}); 

. 나는 내가 jQuery를이

(나는 아직도 1.4.4 따라서 live하지 bind (1.7+)를 사용하고 참고)을 변경할 수 있다는 것을 알고 live (또는 bind)로 정의하지 않고 이러한 핸들러를 유지할 수있는 방법이 있다면
jQcurrentOption.live("click",function(){ 
//IMPLEMENTATION 
}); 

그러나 나는 때때로 내가 live을 적용 할 jQuery를 사용의 이점이 없습니다. 궁금했다.

+0

JQuery 1.7 +의'.on()'이 유용 할 수 있지만 1.4를 사용하면 다른 해결책이 필요합니다. –

+1

@ Fabrício 1.4의 "다른 해결책"의 필요성에 대한 내 대답을보십시오. – Tomalak

+0

@Tomalak 네, 그 사실을 알고 있습니다. 'on' 메서드는 1.7에서'delegate'을 대신합니다. "delegate"이라는 단어는 내 마음을 건너 뛰기 전에 그냥 건너 뜁니다. 나는 복제품 해킹을 완전히 인식하지 못했고, 미래에 유용 할 수 있습니다. 감사. –

답변

2

jQuery의 clone()을 사용해 보셨습니까? 인수로 true을 전달하는 경우

var $clone = jQcurrentOption.clone(true); 

그것은 이벤트 핸들러를 복제합니다.


는 그 외에도, jQuery를 1.4.4 1.7의 on()에 해당하는 delegate()을 지원

$("select").delegate("option.current", "click", function() { 
//IMPLEMENTATION 
}); 

개별 요소 이벤트 핸들러를 복사 할 필요가 없습니다 이쪽으로.


그냥 지점을 만들려면 : 비록 delegate()는, 정말 인수 순서되는 유일한 차이, on() 더 현대와 같은 일이 1.7로로 사용되지 않습니다. 다음은 현재 구현 (1.7.2)입니다 :

delegate: function(selector, types, data, fn) { 
    return this.on(types, selector, data, fn); 
} 
+0

이것은 효과가 있습니다. 나는 jQuery의 클론이 자바 스크립트보다 좀 더 강력하다고 생각한다. 내가 사용한 최종 해결책 :'var $ y = $ (x) .clone (true); ' –

+0

@TravisJ 예. 또한'data()'에 넣은 것을 복제합니다. - 어쨌든 나는 당신이라면 '대리인()'을 볼 것입니다. 실제로 원하는 것보다 더 기분이 좋습니다. – Tomalak

+0

도움을 주셔서 감사합니다. 나는 위임자 접근 방식을 살펴볼 것입니다 (미래 요소 또는 동적 생성을 지원합니까? "예"를 가리키는 것으로 보이는 설명서에서 말하기가 어려웠습니다). –

관련 문제