>웹 프론트엔드 >JS 튜토리얼 >jQuery_jquery의 라이브 메소드와 바인드 메소드의 차이점에 대한 심층적인 이해

jQuery_jquery의 라이브 메소드와 바인드 메소드의 차이점에 대한 심층적인 이해

WBOY
WBOY원래의
2016-05-16 17:08:34977검색

jq를 통해 레이어와 객체를 추가하는 경우 live()를 사용해야 하며 다른 것은 작동하지 않습니다.

라이브의 단점은 실행 후 공간을 해제하지 않는다는 점이며, 너무 많이 사용하면 바인딩()을 클릭한 후 공간을 더 많이 차지하게 됩니다.

차이점 1:

여기를 클릭하세요

간단한 클릭 이벤트를 이 요소에 바인딩할 수 있습니다.

$('.clickme').bind('클릭', function() {
$('body').append('

또 다른 타겟
');
});

요소를 클릭하면 경고 상자가 나타납니다. 그런 다음 이 뒤에 다른 요소가 추가된다고 상상해 보세요.

이 새 요소는 선택기 ".clickme"와도 일치할 수 있지만 이 요소는 .bind()를 호출한 후에 추가되므로 이 요소를 클릭해도 아무런 효과가 없습니다.

.live()는 이러한 상황에 대한 방법을 제공합니다. 클릭 이벤트를 다음과 같이 바인딩하면:

$('.clickme').live('click', function() {

alert("라이브 핸들러가 호출되었습니다.");
});

그런 다음 새 요소를 추가합니다.

$('body').append('

또 다른 타겟

')

그런 다음 새로 추가된 요소를 클릭해도 이벤트 핸들러 기능을 실행할 수 있습니다.

차이점 2:

(1) 바인딩 메소드는 모든 JavaScript 이벤트를 바인딩할 수 있는 반면, 라이브 메소드는 jQuery 1.3에서 click, dblclick, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover 및 mouseup만 지원합니다. 1, 포커스 및 파란색 이벤트도 지원됩니다(포커스인 및 포커스아웃에 매핑되어 더 적합하고 버블링될 수 있음). 또한 jQuery 1.4.1에서는 hover("mouseenter mouseleave"에 매핑됨)도 지원됩니다.

(2) live()는 DOM 순회를 통해 발견된 요소를 완전히 지원하지 않습니다. 대신 항상 선택기 바로 다음에 .live() 메서드를 사용해야 합니다.

(3) 요소가 이벤트를 바인딩하기 위해 라이브 메서드를 사용할 때 이벤트 전달이나 버블링을 방지하려면 함수에서 false를 반환해야 합니다. 단순히 stopPropagation()을 호출하는 것만으로는 이벤트 전달을 방지할 수 없습니다. 버블링

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