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()을 호출하는 것만으로는 이벤트 전달을 방지할 수 없습니다. 버블링