리스너가 호출 된 범위 밖에서 리스너를 끌 수 있는지 여부를 알 수 없었기 때문에 작은 테스트 코드를 만들었습니다. 콜백을 포함 할 때 테스트 코드에서 왜 그럴지 궁금합니다. .off 메서드에서 코드가 더 이상 작동하지 않는 것 같습니다..off가 콜백과 작동하지 않습니다.
$(document).off('mousedown', function() {
console.log("off");
});
가 사용하는 동안 코드를 깰 것 같다 :
var testobj = {
init: function() {
testobj.listener();
},
listener: function() {
$(document).on('mousedown', function() {
testobj.listener_off();
console.log("on");
});
},
listener_off: function() {
$(document).on('mouseup', function() {
$(document).off('mousedown', function() {
console.log("off");
});
});
}
}
$(function() {
testobj.init();
});
그래서 다시 한 번 문제가 있다는 것입니다
$(document).off('mousedown');
는 잘 작동 것으로 보인다.
또한 여러 이벤트 리스너 (특히 동일한 이벤트에 반응하는 이벤트 리스너)를 처리 할 때 해당 이벤트를 호출하거나 해제하는 모범 사례는 무엇입니까? 나는 그들을 별도의 기능으로 분리하여 나중에 호출 할 수 있거나 문제를 일으킬 수 있습니까?
'.off()'의 두 번째 인수는 제거하려는 핸들러입니다. 익명 함수는 기존 핸들러와 일치하지 않으므로 아무 것도 제거하지 않습니다. – Barmar