>  기사  >  웹 프론트엔드  >  jQuery에서 바인딩 이벤트 함수(bind(), one(), on() 및 live())의 차이점은 무엇입니까?

jQuery에서 바인딩 이벤트 함수(bind(), one(), on() 및 live())의 차이점은 무엇입니까?

一个新手
一个新手원래의
2017-10-10 10:31:001967검색

1. 바인딩() 메서드

는 이벤트 핸들러를 일치하는 각 요소의 특정 이벤트에 바인딩합니다. bind() 메서드의 기본 논리는 on() 메서드입니다.
.bind() 메서드는 동작을 문서에 연결하는 주요 방법입니다. 포커스, 마우스오버, 크기 조정과 같은 모든 JavaScript 이벤트 개체는 유형 매개변수로 전달될 수 있습니다.
예:
.bind()의 가장 기본적인 사용법은 다음과 같습니다.

$('#foo').bind('click', function() {
  alert('User clicked on "foo."');
});

이 코드는 ID가 foo인 요소가 클릭 이벤트에 응답하도록 할 수 있습니다. 사용자가 요소 내부를 클릭하면 경고 상자가 나타납니다.

2. on() 메서드

는 선택한 요소에 대한 하나 이상의 이벤트 핸들러 기능을 바인딩합니다.
on() 메서드는 이벤트 핸들러를 현재 선택된 jQuery 객체의 요소에 바인딩합니다. jQuery 1.7에서 .on() 메서드는 이벤트 핸들러를 바인딩하는 데 필요한 모든 기능을 제공합니다.
jQuery에서 바인딩 이벤트 함수(bind(), one(), on() 및 live())의 차이점은 무엇입니까?
매개변수 설명:
events: "click" 또는 "keydown.myPlugin"과 같은 선택적 네임스페이스와 공백으로 구분된 하나 이상의 이벤트 유형입니다.
selector: 필터 이벤트를 트리거하는 선택기 요소의 자손으로 사용되는 선택기 문자열입니다. 선택한 data: 이벤트가 트리거되면 event.data가 이벤트 핸들러 함수에 전달되어야 합니다.
fn: 이 이벤트가 트리거될 때 실행되는 함수입니다. false 값은 false를 반환하는 함수의 약칭으로 사용될 수도 있습니다.

3. one() 메소드

일회성 이벤트 핸들러를 일치하는 각 요소의 특정 이벤트(예: 클릭)에 바인딩합니다.
각 개체에서 이 이벤트 핸들러 함수는 한 번만 실행됩니다. 그 외의 규칙은 Bind() 함수와 동일합니다. 이 이벤트 핸들러는 기본 동작을 방지하는 데 사용할 수 있는 이벤트 개체를 수신합니다. 기본 동작을 취소하고 이벤트가 버블링되는 것을 방지하려면 이벤트 핸들러가 false를 반환해야 합니다.
jQuery에서 바인딩 이벤트 함수(bind(), one(), on() 및 live())의 차이점은 무엇입니까?
매개변수 설명:
type: 요소에 하나 이상의 이벤트가 추가되었습니다. 여러 이벤트는 공백으로 구분됩니다. 유효한 이벤트여야 합니다.
data: 이벤트 처리 함수에 전달할 데이터 매핑
fn: 이벤트가 트리거될 때마다 실행되는 함수입니다.

4. live() 메소드

jQuery는 일치하는 모든 요소에 이벤트 핸들러 함수를 첨부합니다. 이 요소가 나중에 추가되더라도 유효합니다.
jQuery에서 바인딩 이벤트 함수(bind(), one(), on() 및 live())의 차이점은 무엇입니까?

이 메서드는 기본적으로 .bind() 메서드의 변형입니다. .bind()를 사용할 때 선택기와 일치하는 요소에는 이벤트 핸들러가 첨부되지만 나중에 추가되는 요소는 그렇지 않습니다. 이를 위해서는 .bind()를 다시 사용해야 합니다.
이벤트 위임:
.live() 메소드는 이벤트 위임 사용으로 인해 DOM에 추가되지 않은 요소에 효과적일 수 있습니다. 상위 요소에 바인딩된 이벤트 핸들러는 하위 항목에서 트리거된 이벤트에 응답할 수 있습니다. . 대답하다. .live()에 전달된 이벤트 핸들러는 요소에 바인딩되지 않지만 특수 이벤트 핸들러로 처리되어 DOM 트리의 루트 노드에 바인딩됩니다.
추가 참고 사항:
.live()는 유용하지만 특수 구현으로 인해 어떤 경우에도 .bind()를 간단히 대체할 수는 없습니다. 주요 차이점은 다음과 같습니다.

  1. jQuery 1.4에서 .live() 메서드는 사용자 정의 이벤트를 지원하고 모든 JavaScript 이벤트도 지원합니다. jQuery 1.4.1에는 포커스 및 블러 이벤트(더 적절하고 버블링되는 포커스인 및 포커스아웃에 매핑됨)도 지원됩니다. 또한 jQuery 1.4.1에서는 hover("mouseenter mouseleave"에 매핑됨)도 지원됩니다. 그러나 jQuery 1.3.x에서는 지원되는 JavaScript 이벤트와 사용자 정의 이벤트(click, dblclick, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover 및 mouseup)만 지원됩니다.

  2. .live()는 요소를 지원하지 않습니다. DOM 탐색을 통해 발견된 항목은 완벽하게 지원됩니다. 대신, 이전 예제에서 언급한 것처럼 항상 선택기 바로 다음에 .live() 메서드를 사용해야 합니다.

  3. 이벤트 처리 함수가 .live()와 바인딩되어 있고 다른 이벤트 처리 함수의 실행을 중지하려는 경우 이 함수는 false를 반환해야 합니다. 단순히 .stopPropagation()을 호출하면 이 작업이 수행되지 않습니다.

특별 참고 사항:

jQuery 1.7부터 .live() 메서드는 더 이상 권장되지 않습니다. 이벤트 처리를 추가하려면 .on()을 사용하세요.

위 내용은 jQuery에서 바인딩 이벤트 함수(bind(), one(), on() 및 live())의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.