> 웹 프론트엔드 > JS 튜토리얼 > jQuery events_jquery의 네임스페이스에 대한 간략한 이해

jQuery events_jquery의 네임스페이스에 대한 간략한 이해

WBOY
풀어 주다: 2016-05-16 17:12:57
원래의
1101명이 탐색했습니다.

jQuery를 사용하면 이벤트 리스너 바인딩 및 바인딩 해제가 매우 간단합니다. 하지만 요소의 이벤트에 바인딩된 여러 리스너가 있는 경우 리스너 중 하나를 정확히 어떻게 바인딩 해제합니까? 이벤트의 네임스페이스를 이해해야 합니다.

아래 코드를 보세요:

코드를 복사하세요 코드는 다음과 같습니다.

$('#element')
.on('click', doSomething)
.on('click', doSomethingElse)

다음과 같이 이벤트 리스너를 바인딩합니다. 위에서 요소를 클릭하면 doSomething 및 doSomethingElse 리스너가 모두 트리거됩니다. 이는 jQuery를 사용하면 편리하며, 언제든지 요소의 동일한 이벤트에 다른 리스너를 추가할 수 있습니다. onclick과 달리 새 리스너는 이전 리스너를 덮어씁니다.

doSomething과 같은 리스너 중 하나의 바인딩을 해제하려면 어떻게 해야 하나요?

그런가요?
코드 복사 코드는 다음과 같습니다.

$('#element').off ('클릭');

주의하세요! 위의 코드 줄은 요소의 클릭 이벤트에 대한 모든 리스너를 바인딩 해제하지만 이는 우리가 원하는 결과가 아닙니다.

다행히도 jQuery의 .off() 메서드는 .on() 처럼 두 번째 인수를 받아들일 수 있습니다. 리스너 함수의 이름이 .off() 메소드에 두 번째 매개변수로 전달되는 한, 지정된 리스너는 바인딩 해제될 수 있습니다.
코드 복사 코드는 다음과 같습니다.

$('#element').off ('click', doSomething);

그러나 이 함수의 이름을 모르거나 익명 함수를 사용하는 경우:
코드 복사 코드는 다음과 같습니다.

$('#element').on('click', function() {
console.log('doSomething');
});

클릭 이벤트 리스너를 정확하게 바인딩 해제하는 방법은 무엇입니까?
먼저 코드를 입력하세요:
코드를 복사하세요 코드는 다음과 같습니다:

$('#element ').on('click.myNamespace', function() {
console.log('doSomething');
})

이것은 아닙니다. 클릭 이벤트에 대해 매개변수로 .on() 메서드를 전달하되 클릭 이벤트에 대한 네임스페이스를 지정한 다음 이 네임스페이스에서 클릭 이벤트를 수신합니다. 이 시점에서는 리스너가 익명 함수이더라도 실제로는 "이름이 지정"됩니다. 이제 다음과 같이 특정 네임스페이스에서 이벤트 리스너를 바인딩 해제할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

$('#element').off ('click .myNamespace');

이것은 jQuery가 제공하는 또 다른 편리하고 강력한 기능이며, 내부 구현은 확실히 흥미롭습니다!
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿