자바 스크립트 (jquery)-하나의 이벤트에 연결된 여러 핸들러 : 하나만 분리하는 방법은 무엇입니까?

다크 소울 송

이 모듈에서는 창에 '크기 조정'이벤트에 대한 리스너가 있습니다. 모듈이 실행될 때마다 원하지 않는 동작, 메모리 누수 등을 피하기 위해 해당 이벤트에 등록 된 리스너가 이미 있는지 확인하고 분리해야합니다.

지금까지는 훌륭하지만이 응용 프로그램에서는 일부 핸들러가 이미 'resize'이벤트에 연결되어 있고 $(window).off('resize')다른 플러그인에 의해 이전에 등록 된 다른 모든 이벤트 핸들러를 플러시하므로를 호출 할 수 없습니다. 또는 모듈.

그렇기 때문에 내 핸들러를 식별하고 내가 등록한 것만 분리하는 방법이 있는지 알고 싶습니다. .off()함수 에서 참조하기 위해 이벤트 핸들러에 식별자를 어떻게 설정 합니까?

어떤 도움이라도 좋을 것입니다.

Karl-André Gagnon

여기에 두 가지 제안이 있습니다. 이벤트에 네임 스페이스를 제공하거나 바인딩 할 때 익명 함수 없음을 전달할 수 있습니다.

네임 스페이스 사용 예 :

$(window).on('resize.event1', function(){});
$(window).on('resize.event2', function(){});

//Only turn off event 2
$(window).off('resize.event2');

jQuery를 사용하면 이벤트를 식별 할 수 있습니다. 이 동작을 네임 스페이스라고합니다. 현재 이벤트와 이벤트 이름은 점으로 구분해야합니다. 이 경우 두 개의 크기 조정 이벤트 (점의 왼쪽)를 바인딩하고 있습니다. 하나는 이름이 event1있고 다른 하나는 event2.

이벤트를 식별하여 개체에 동일한 이벤트가 여러 개있는 경우 단일 이벤트를 제거 (또는 트리거) 할 수 있습니다.

$(window).trigger('resize'); //Trigger both;
$(window).trigger('resize.event2'); //Trigger event2;

명명 된 함수를 사용한 예 :

$(window).on('resize', function1);
$(window).on('resize', function2);

//Only turn off event 2
$(window).off('resize', function2);

비 익명 함수를 연결하면 전달 된 함수가 현재 이벤트 함수와 일치하는 경우 이벤트를 제거 할 수 있습니다. 왜냐하면 function2 === function2, 두 번째 함수 만 제거됩니다 function1 !== function2!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관