웹 프론트엔드 JS 튜토리얼 jQuery on()_jquery를 사용하여 동적 요소를 바인딩할 때 발생하는 문제 요약

jQuery on()_jquery를 사용하여 동적 요소를 바인딩할 때 발생하는 문제 요약

May 16, 2016 pm 03:14 PM

jQuery on() 메서드는 이벤트 바인딩을 위해 공식적으로 권장되는 메서드입니다. on() 메서드를 사용하여 지정된 이벤트를 추가 등 미래에 동적으로 생성되는 동적 요소에 바인딩합니다.

이전에 쓸땐 항상 그랬어요

$("").on('click','function(){ 
}') 
로그인 후 복사

나중에 바인딩할 수 없는 경우가 있다는 사실을 발견했습니다(예: 요소가 동적으로 생성되는 경우). 문서를 확인한 후 올바른 사용법은

이어야 한다는 것을 알았습니다.
$(document).on("change","#pageSize_out",function(){ 
if($("#page_out").val()!=0){ 
$("#pageSize").val($(this).val()); 
list(); 
} 
}) 
로그인 후 복사

또한 참고해주세요

이 답변은 많은 관심을 받고 있으므로 다음 두 가지 보충 조언을 드립니다.

1) 가능하다면 이벤트 리스너를 가장 정확한 요소에 바인딩하여 불필요한 이벤트 처리를 방지하세요.

That is, if you're adding an element of class b to an existing element of id a, then don't use
$(document.body).on('click', '#a .b', function(){
but use
$('#a').on('click', '.b', function(){
로그인 후 복사

2) ID가 있는 요소를 추가할 때 두 번 추가하지 않도록 주의하세요. HTML에서 동일한 ID를 가진 두 요소를 갖는 것은 "불법"일 뿐만 아니라 많은 부분이 깨집니다. 예를 들어 선택기 "#c"는 이 ID를 가진 요소 하나만 검색합니다.

on(events,[selector],[data],fn)
로그인 후 복사

이벤트: 공백과 선택적 네임스페이스(예: "click" 또는 "keydown.myPlugin")로 구분된 하나 이상의 이벤트 유형입니다.
selector: 이벤트를 트리거한 선택기 요소의 필터 하위 항목에 대한 선택기 문자열입니다. 선택기가 null이거나 생략된 경우 선택한 요소에 도달하면 이벤트가 항상 시작됩니다.

data: 이벤트가 트리거되면 event.data가 이벤트 처리 함수에 전달되어야 합니다.

fn: 이벤트가 발생했을 때 실행되는 함수입니다. false 값은 false를 반환하는 함수의 약칭으로 사용될 수도 있습니다.

바인드() 교체

두 번째 매개변수 'selector'가 null인 경우 기본적으로 on()과bind()의 사용법에 차이가 없으므로 on()에는 단지 바인드()의 'selector' 매개변수보다 하나의 옵션이 더 있다고 생각하면 됩니다. , 따라서 on()은 쉽게 바인딩()을 대체할 수 있습니다

live() 교체

1.4 이전에는 이벤트를 현재 및 미래 요소에 바인딩할 수 있기 때문에 모든 사람들이 live()를 사용하는 것을 좋아했다고 생각합니다. 물론 1.4 이후에는 Delegate()도 비슷한 작업을 수행할 수 있습니다. live()의 원리는 매우 간단합니다. 문서를 통해 이벤트를 위임하므로 이벤트를 문서에 바인딩하여 on()을 사용하여 live()와 동일한 효과를 얻을 수도 있습니다.

라이브() 작성 방법

코드는 다음과 같습니다.

$('#list li').live('click', '#list li', function() {
//function code here.
}); 
로그인 후 복사

on() 작성 방법

코드는 다음과 같습니다.

$(document).on('click', '#list li', function() {
//function code here.
});
로그인 후 복사

여기서 핵심은 두 번째 매개변수 '선택기'가 적용된다는 것입니다. 이는 필터 역할을 하며 선택한 요소의 하위 요소만 이벤트를 트리거합니다.

대리자() 교체

delegate()는 조상 요소를 통해 하위 요소의 이벤트 바인딩 문제를 위임할 목적으로 1.4에서 도입되었습니다. 어느 정도 live()와 비슷한 장점이 있습니다. 단지 live()가 문서 요소를 통해 위임되고 위임은 모든 조상 노드가 될 수 있다는 것입니다. on()을 사용하여 Proxy를 구현하는 방법은 기본적으로 Delegate()와 동일합니다.

대리자() 작성 방법

코드는 다음과 같습니다.

$('#list').delegate('li', 'click', function() {
//function code here.
});
로그인 후 복사

on() 작성 방법

코드는 다음과 같습니다.

$('#list').on('click', 'li', function() {
//function code here.
});
로그인 후 복사

첫 번째와 두 번째 매개변수의 순서가 반대인 것 같지만 그 외 기본적으로는 동일합니다.

요약

jQuery는 두 가지 목적으로 on()을 출시했는데, 하나는 인터페이스 통합이고, 다른 하나는 성능 향상이므로, 이제부터는 바인딩(), live(), 위임을 대체하기 위해 on()을 사용합니다. 특히, live()는 이미 더 이상 사용되지 않는 목록에 있고 언제든지 종료될 것이므로 더 이상 사용하지 마십시오. 이벤트를 한 번만 바인딩한 다음 one()을 사용하면 이에 대한 변경 사항이 없습니다.

jquery on() 메서드는 동적 요소를 바인딩합니다

더 이상 쓸데없는 소리는 하지 마세요. 그냥 코드를 게시하겠습니다.

<div id="test">
<div class="evt">evt1</div>
</div>
로그인 후 복사

잘못된 사용법입니다. 다음 방법은 클릭 이벤트를 evt 클래스가 있는 첫 번째 div에만 바인딩합니다. 추가를 사용하여 동적으로 생성된 div는 바인딩되지 않습니다.

<script>
// 先绑定事件再添加div
$('#test .evt').on('click', function() {alert($(this).text())});
$('#test').append('<div class="evt">evt2</div>');
</script>
로그인 후 복사

올바른 사용법은 다음과 같습니다.

<script>
$('body').on('click', '#test .evt', function() {alert($(this).text())});
$('#test').append('<div class="evt">evt2</div>');
</script>
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

내 자신의 JavaScript 라이브러리를 어떻게 작성하고 게시합니까? 내 자신의 JavaScript 라이브러리를 어떻게 작성하고 게시합니까? Mar 18, 2025 pm 03:12 PM

기사는 JavaScript 라이브러리 작성, 게시 및 유지 관리, 계획, 개발, 테스트, 문서 및 홍보 전략에 중점을 둡니다.

브라우저에서 성능을 위해 JavaScript 코드를 최적화하려면 어떻게해야합니까? 브라우저에서 성능을 위해 JavaScript 코드를 최적화하려면 어떻게해야합니까? Mar 18, 2025 pm 03:14 PM

이 기사는 브라우저에서 JavaScript 성능을 최적화하기위한 전략에 대해 설명하고 실행 시간을 줄이고 페이지로드 속도에 미치는 영향을 최소화하는 데 중점을 둡니다.

프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? 프론트 엔드 열 용지 영수증에 대한 차량 코드 인쇄를 만나면 어떻게해야합니까? Apr 04, 2025 pm 02:42 PM

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

브라우저 개발자 도구를 사용하여 JavaScript 코드를 효과적으로 디버그하려면 어떻게해야합니까? 브라우저 개발자 도구를 사용하여 JavaScript 코드를 효과적으로 디버그하려면 어떻게해야합니까? Mar 18, 2025 pm 03:16 PM

이 기사는 브라우저 개발자 도구를 사용하여 효과적인 JavaScript 디버깅, 중단 점 설정, 콘솔 사용 및 성능 분석에 중점을 둡니다.

소스 맵을 사용하여 조정 된 JavaScript 코드를 디버그하는 방법은 무엇입니까? 소스 맵을 사용하여 조정 된 JavaScript 코드를 디버그하는 방법은 무엇입니까? Mar 18, 2025 pm 03:17 PM

이 기사는 소스 맵을 사용하여 원래 코드에 다시 매핑하여 미니어링 된 JavaScript를 디버그하는 방법을 설명합니다. 소스 맵 활성화, 브레이크 포인트 설정 및 Chrome Devtools 및 Webpack과 같은 도구 사용에 대해 설명합니다.

Chart.js : Pie, Donut 및 Bubble Charts를 시작합니다 Chart.js : Pie, Donut 및 Bubble Charts를 시작합니다 Mar 15, 2025 am 09:19 AM

이 튜토리얼은 Chart.js를 사용하여 파이, 링 및 버블 차트를 만드는 방법을 설명합니다. 이전에는 차트 유형의 차트 유형을 배웠습니다. JS : 라인 차트 및 막대 차트 (자습서 2)와 레이더 차트 및 극지 지역 차트 (자습서 3)를 배웠습니다. 파이 및 링 차트를 만듭니다 파이 차트와 링 차트는 다른 부분으로 나뉘어 진 전체의 비율을 보여주는 데 이상적입니다. 예를 들어, 파이 차트는 사파리에서 남성 사자, 여성 사자 및 젊은 사자의 비율 또는 선거에서 다른 후보자가받는 투표율을 보여주는 데 사용될 수 있습니다. 파이 차트는 단일 매개 변수 또는 데이터 세트를 비교하는 데만 적합합니다. 파이 차트의 팬 각도는 데이터 포인트의 숫자 크기에 의존하기 때문에 원형 차트는 값이 0 인 엔티티를 그릴 수 없습니다. 이것은 비율이 0 인 모든 엔티티를 의미합니다

누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? 누가 더 많은 파이썬이나 자바 스크립트를 지불합니까? Apr 04, 2025 am 12:09 AM

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

초보자를위한 타이프 스크립트, 2 부 : 기본 데이터 유형 초보자를위한 타이프 스크립트, 2 부 : 기본 데이터 유형 Mar 19, 2025 am 09:10 AM

엔트리 레벨 타입 스크립트 자습서를 마스터 한 후에는 TypeScript를 지원하고 JavaScript로 컴파일하는 IDE에서 자신의 코드를 작성할 수 있어야합니다. 이 튜토리얼은 TypeScript의 다양한 데이터 유형으로 뛰어납니다. JavaScript에는 NULL, UNDEFINED, BOOLEAN, 번호, 문자열, 기호 (ES6에 의해 소개 됨) 및 객체의 7 가지 데이터 유형이 있습니다. TypeScript는이 기반으로 더 많은 유형을 정의 하며이 튜토리얼은이 모든 튜토리얼을 자세히 다룹니다. 널 데이터 유형 JavaScript와 마찬가지로 Null in TypeScript

See all articles