> 웹 프론트엔드 > JS 튜토리얼 > 동적으로 추가된 요소에 대해 jQuery의 `live()`를 `on()`으로 올바르게 마이그레이션하는 방법은 무엇입니까?

동적으로 추가된 요소에 대해 jQuery의 `live()`를 `on()`으로 올바르게 마이그레이션하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-16 05:22:10
원래의
730명이 탐색했습니다.

How to Correctly Migrate jQuery's `live()` to `on()` for Dynamically Added Elements?

jQuery에서 live()에서 on()으로 전환: 이벤트 바인딩 디버깅

jQuery의 live() 메서드는 버전 1.7에서 더 이상 사용되지 않으므로 on( ). live()를 on()으로 바꾸면 이상적으로는 비슷한 결과가 나오지만, on() 문서에서는 이벤트 핸들러가 바인딩 시 페이지에 있는 현재 선택된 요소에만 바인딩된다는 점을 강조합니다.

원본 구현(라이브()):

$('select[name^="income_type_"]').live('change', function() {
    alert($(this).val());
});
로그인 후 복사

교체 (on()):

$('select[name^="income_type_"]').on('change', function() {
    alert($(this).val());
});
로그인 후 복사

live()와의 불일치는 이벤트를 첨부한 live()의 위임 메커니즘과 달리 on()이 현재 존재하는 요소에만 바인딩된다는 사실에서 비롯됩니다. DOM에 동적으로 추가된 요소에 대한 핸들러.

동적에 대한 on()의 올바른 사용 요소:

on()을 사용하여 동적으로 추가된 요소에 대한 이벤트 처리를 유지하려면 이벤트 핸들러가 바인딩 시 페이지에 존재하는 상위 요소에 바인딩되어야 합니다. 이는 다음을 사용하여 달성할 수 있습니다:

$(document.body).on('change', 'select[name^="income_type_"]', function() {
    alert($(this).val());
});
로그인 후 복사

또는 이벤트 위임을 요소 계층 구조에 더 가깝게 적용하여 구체성을 향상시킬 수 있습니다.

jQuery 문서 참고:

live() 문서에서는 후속 항목 측면에서 live()를 다시 작성하는 작업에는 이벤트 핸들러를 바인딩하는 작업이 포함된다는 점을 명시적으로 명시하고 있습니다. 기존 요소:

$(document).on(events, selector, data, handler);  // jQuery 1.7+
로그인 후 복사

위 내용은 동적으로 추가된 요소에 대해 jQuery의 `live()`를 `on()`으로 올바르게 마이그레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿