[JQUERY] jQuery : unbind 이벤트 핸들러가 나중에 다시 묶을 수 없습니다.
JQUERYjQuery : unbind 이벤트 핸들러가 나중에 다시 묶을 수 없습니다.
해결법
-
1.항목의 데이터에 이벤트 요소가 있습니다. 이 작업을 수행해야합니다. 끄기 전에 요소를 읽고 핸들러를 배열에 저장할 수 있습니다. 더 많은 도움이 필요하면 의견을 말하십시오. 이 아이디어가 $ .fn.clone 메소드를 읽지 않으므로 봐도됩니다.
항목의 데이터에 이벤트 요소가 있습니다. 이 작업을 수행해야합니다. 끄기 전에 요소를 읽고 핸들러를 배열에 저장할 수 있습니다. 더 많은 도움이 필요하면 의견을 말하십시오. 이 아이디어가 $ .fn.clone 메소드를 읽지 않으므로 봐도됩니다.
$(document).ready(function() { $('#test').click(function(e) { alert('test'); var events = $('#test').data("events"); $('#test').unbind('click', events.click[0]); }); }); <a id="test">test</a>
-
2.이를 달성하는 방법은 선택할 수있는 상점 및 수정 방법을 제공합니다. StoreEvents가 호출되는 순간에 이벤트의 스냅 샷을 취합니다. RestoreeEvents는 마지막으로 이전 스냅 샷을 복원합니다. 복원하는 동안 바인딩을 매개 변수화하는 데 조금 뒤틀어 져야 할 수도 있습니다. 마지막 스냅 샷 후에 바인딩 된 이벤트를 유지하고 싶습니다.
이를 달성하는 방법은 선택할 수있는 상점 및 수정 방법을 제공합니다. StoreEvents가 호출되는 순간에 이벤트의 스냅 샷을 취합니다. RestoreeEvents는 마지막으로 이전 스냅 샷을 복원합니다. 복원하는 동안 바인딩을 매개 변수화하는 데 조금 뒤틀어 져야 할 수도 있습니다. 마지막 스냅 샷 후에 바인딩 된 이벤트를 유지하고 싶습니다.
(function($){ function obj_copy(obj){ var out = {}; for (i in obj) { if (typeof obj[i] == 'object') { out[i] = this.copy(obj[i]); } else out[i] = obj[i]; } return out; } $.fn.extend({ storeEvents:function(){ this.each(function(){ $.data(this,'storedEvents',obj_copy($(this).data('events'))); }); return this; }, restoreEvents:function(){ this.each(function(){ var events = $.data(this,'storedEvents'); if (events){ $(this).unbind(); for (var type in events){ for (var handler in events[type]){ $.event.add( this, type, events[type][handler], events[type][handler].data); } } } }); return this; } }); })(jQuery);
-
3.jQuery 1.4.2+가 이벤트 핸들러가 저장되는 방법을 변경하기 때문에 관련이 있습니다.
jQuery 1.4.2+가 이벤트 핸들러가 저장되는 방법을 변경하기 때문에 관련이 있습니다.
내가 발견 한 가장 좋은 방법은 이벤트 네임 스페이스를 사용하는 것이 었습니다.
var ary_handlers = [ fn_highlight, fn_onpress, fn_cleanup ]; for ( idx = 0; idx < ary_handlers.length; idx++ ){ $('#test').bind('click.foobar',ary_handlers[idx]); } // and then later: $('#test').unbind('.foobar');
위의 예에서 모든 foobar 사건은 언 바운드입니다. 미세한 곡물 컨트롤이 필요하면 각 클릭 핸들러의 이름을 지정하고 핸들러 배열과 상관 관계를 유지할 수 있습니다.
var ary_handlers = [ fn_highlight, fn_onpress, fn_cleanup ]; for ( idx = 0; idx < ary_handlers.length; idx++ ){ $('#test').bind('click.ns_' + String(idx), ary_handlers[idx]); } // and then later you could pick off a specific one to unbind $('#test').unbind('.ns_2');
-
4.복사 이벤트라는 jQuery 플러그인이 있습니다.이 사물은 한 개체에서 다른 개체로 이벤트를 복사합니다. 이것은 하나의 요소에서 "저장"이벤트를 "저장"하고 나중에 다시 가져올 수 있습니다. 한 번 더 옵션 :)
복사 이벤트라는 jQuery 플러그인이 있습니다.이 사물은 한 개체에서 다른 개체로 이벤트를 복사합니다. 이것은 하나의 요소에서 "저장"이벤트를 "저장"하고 나중에 다시 가져올 수 있습니다. 한 번 더 옵션 :)
편집 : 고정 된 링크를 고정했습니다
-
5.이벤트 핸들러를 해제하려면 핸들러 함수를 unbind ()로 전달해야합니다. 그래서 이미 핸들러 기능이 있으므로, 당신이해야 할 일은 모두 기억하는 것입니다.
이벤트 핸들러를 해제하려면 핸들러 함수를 unbind ()로 전달해야합니다. 그래서 이미 핸들러 기능이 있으므로, 당신이해야 할 일은 모두 기억하는 것입니다.
-
6.event.Handler 매개 변수를 사용할 수 있습니다.
event.Handler 매개 변수를 사용할 수 있습니다.
$(document).ready(function() { $('#test').click(function(e) { e.preventDefault(); alert('test'); $('#test').unbind('click', e.handler); //Do Something... $('#test').click(); }); }); <a id="test">test</a>
event.Handler 이벤트를 수신 한 현재 핸들러를 반환하므로 다른 핸들러를 유지할 수 있습니다.
-
7.Nick Curaver는 jQuery 1.4.2+에 대한 정답을 갖는 것으로 보입니다. 그는 또한 유용한 바이올린을 포함합니다. 그의 솔루션을 사용하면 jQuery 요소에 첨부 된 모든 이벤트 핸들러를 검색하고 첨부 된 핸들러를 파악할 수 있습니다.
Nick Curaver는 jQuery 1.4.2+에 대한 정답을 갖는 것으로 보입니다. 그는 또한 유용한 바이올린을 포함합니다. 그의 솔루션을 사용하면 jQuery 요소에 첨부 된 모든 이벤트 핸들러를 검색하고 첨부 된 핸들러를 파악할 수 있습니다.
from https://stackoverflow.com/questions/516265/jquery-unbind-event-handlers-to-bind-them-again-later by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] JQuery Post JSON 객체를 서버에 게시합니다 (0) | 2020.11.03 |
---|---|
[JQUERY] 프로그래밍 방식으로 모바일 Safari의 다음 입력 필드에 중점을 둡니다 (0) | 2020.11.03 |
[JQUERY] jQuery Ajax - Ajax 호출을 할 때 네트워크 연결 오류를 감지하는 방법 (0) | 2020.11.03 |
[JQUERY] HTML 테이블에 JSON 데이터를 표시합니다 (0) | 2020.11.03 |
[JQUERY] jQuery에서 show ()와 숨기기 ()를 사용하여 지연 ()을 어떻게 사용할 수 있습니까? (0) | 2020.11.03 |