죄송합니다. 일반적인 질문이지만 검색을 통해 적절하다고 판단되는 답변을 찾을 수 없습니다. 다음과 같이 나중에 제거하려고 작동하지 않는 것매개 변수가있는 함수를 사용하여 이벤트 수신기를 추가 및 제거하려면 어떻게합니까?
window.addEventListener('scroll', function() { check_pos(box); }, false);
: :이 같은 이벤트 리스너를 연결하는 경우
는
window.removeEventListener('scroll', function() { check_pos(box); }, false);
나는 이것이 때문에 가정 addEventListener
및 removeEventListener
메서드는 동일한 함수에 대한 참조를 원하지만 익명 함수는 제공하지만 코드에서는 동일하지만 문자 그대로는 동일하지 않습니다.
removeEventListener
으로 전화를 걸려면 코드를 어떻게 변경하면 되나요? "상자"인수는 화면에서 추적중인 의 이름을 나타냅니다. 즉, 내가 가지고있는 각각에 대해 scroll
이벤트를 한 번 구독 할 수 있고 (수량이 다양 함) check_pos()
함수가 특정 위치를 측정하면 다른 기능을 호출하고 이벤트 리스너를 제거하여 무료로 제공합니다. up 시스템 자원.
솔직히 말해서 해결 방법은 익명의 함수를 클로저 및/또는 명명하는 것이지만 정확히 어떻게 생겼는지 확실하지 않으며 구체적인 예를 이해할 수 있습니다.
희망이 있습니다. 어떤 도움을 주셔서 감사합니다!
내가 틀렸다면 정정 해주세요.하지만이 방법을 사용하면 "상자"에 대해 다른 값으로 여러 이벤트 수신기를 설정할 수 없다고 생각합니다. 인수 "box"는 전역 변수가 아닙니다. 예를 들어 리터럴 값만 사용하면 window.addEventListener ('scroll', function() {do_something ('string1');}, false)), 등등. – Bungle
거기에 a()가 있습니다.) do {something} ('string1'); 클로저를 사용하여 여러 이벤트 리스너를 추가하는 방법 (http://stackoverflow.com/questions/2276961/is-there-for-window-onload-in-javascript/2277000#2277000 참조) 그러나 심각한 이벤트 처리를 원할 경우 jQuery를 사용하는 것이 좋습니다. 그것은 훨씬 쉽게. –