원문 링크 http://api.jquery.com/undelegate/
개요 : 루트 요소의 특정 집합에 기반을 두고, 현재 선택과 일치하는 모든 요소에 대한 이벤트로부터 핸들러를 제거합니다.
- .undelegate()
- .undelegate( selector, eventType )
- selector 선택자
- eventType JavaScript 이벤트 타입 문자열, "click", "keydown" 같은
- .undelegate( selector, eventType, handler(eventObject) )
- selector 선택자
- eventType JavaScript 이벤트 타입 문자열, "click", "keydown" 같은
- handler(eventObject) 이벤트가 발생하면 동시에 실행될 기능.
- .undelegate( selector, events )
- selector 선택자
- events 하나 이상의 이벤트 타입과 해제할 기능들의 맵 데이터.
- .undelegate( namespace )
- namespace 네임스페이스에 해당하는 모든 이벤트가 바인딩 해제됨.
.undelegate()
함수는 .delegate()
로 바인딩된 이벤트 핸들러들을 해제합니다.. jQuery 1.7에 와서는, .on()
과 .off()
함수로 대체되었습니다.
예 제
바인딩과 해제에 대한 예제입니다.
<!DOCTYPE html> <html> <head> <style> button { margin:5px; } button#theone { color:red; background:yellow; } </style> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <button id="theone">Does nothing...</button> <button id="bind">Bind Click</button> <button id="unbind">Unbind Click</button> <div style="display:none;">Click!</div> <script> function aClick() { $("div").show().fadeOut("slow"); } $("#bind").click(function () { $("body").delegate("#theone", "click", aClick) .find("#theone").text("Can Click!"); }); $("#unbind").click(function () { $("body").undelegate("#theone", "click", aClick) .find("#theone").text("Does nothing..."); }); </script> </body> </html>
미리보기
바인딩하고 해제하는 방법에 대한 예제입니다. 버튼을 눌러보시면서 확인하세요.
예 제
모든 p 태그의 이벤트 바인딩을 해제하기
$("p").undelegate()
예 제
모든 p 태그의 click 이벤트 바인딩을 해제하기
$("p").undelegate( "click" )
예 제
세번째 인자를 사용하여 바인딩했던 이벤트만 해제하기
var foo = function () { // code to handle some kind of event }; // ... now foo will be called when paragraphs are clicked ... $("body").delegate("p", "click", foo); // ... foo will no longer be called. $("body").undelegate("p", "click", foo);
예 제
네임스페이스를 사용하여 그에 해당하는 모든 이벤트 핸들러를 해제하기
var foo = function () { // code to handle some kind of event }; // delegate events under the ".whatever" namespace $("form").delegate(":button", "click.whatever", foo); $("form").delegate("input[type='text']", "keypress.whatever", foo); // unbind all events delegated under the ".whatever" namespace $("form").undelegate(".whatever");
바인딩을 해제하는 방법은 많네요. 잘 구분하시면서 사용하셔야 할듯.
그럼 즐프하세요.
※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.
'프로그래밍 > jQuery' 카테고리의 다른 글
delay(), 대기열의 함수 실행을 지연시키기 (0) | 2012.04.16 |
---|---|
clearQueue(), 대기열의 함수를 제거 (0) | 2012.04.16 |
animate(), 요소를 움직이기 (8) | 2012.03.30 |
unload(), 페이지에서 벗어날 때 (2) | 2012.03.20 |
unbind(), 바인딩 해제하기 (0) | 2012.03.20 |
triggerHandler(), 하나의 함수만 실행시키기 (0) | 2012.03.20 |
trigger(), 함수 실행시키기 (0) | 2012.03.20 |
toggle(), 토글하기 (0) | 2012.03.09 |