jquery에서 live 메소드를 on 메소드로 대체하는 문제에 대한 자세한 설명

黄舟
풀어 주다: 2017-06-26 09:35:21
원래의
1367명이 탐색했습니다.

앞으로 추가할 요소는 ajax 스플라이싱입니다 ​​
My on은 이렇게 써있습니다

$("td").on("click","a",function(){
alert("Aha!");
});
로그인 후 복사

페이지의 라벨입니다

<td><a class="topic_a" href="#creat"  name=&#39;${data.context }&#39;>选择</a></td>
로그인 후 복사

ajax 스플라이싱 태그는 위 태그와 완전히 동일합니다.

하지만 접합된 라벨을 클릭해도 아무런 효과가 없습니다.
왜?

on을 바인딩할 때 td가 이미 DOM에 존재하는지 확인하세요..
또한..live가 document에 바인딩되어 있기 때문에 live가 가능한 이유..Document는 언제든지 존재합니다.. Your
이벤트 td가 존재하지 않으면 확실히 바인딩되지 않습니다.
이벤트 프록시 메커니즘에 대해 자세히 알아보세요.

델리게이트로 교체하세요

향후 추가되는 요소에는 ?

가 포함된 경우 이벤트 프록시를 $("td")에 바인딩할 수 없습니다.
이벤트 프록시는 상위 요소에 바인딩되어야 합니다.
예를 들어

또는
의 상위 요소는 예를 들어 본문이나 문서에 바인딩할 수도 있습니다. ,

$("body").on("click","a",function(){
alert("Aha!");
});
로그인 후 복사
로그인 후 복사

바인드에 사용하세요.
먼저 연결한 다음 페이지에 추가한 다음 이벤트를 바인딩하세요.

js에서는 한 줄씩 읽어도 됩니다.


바인딩 이벤트가 앞에 적혀있고, 나중에 td가 추가된다면 당연히 그런 이벤트는 없을 겁니다.
또한 td가 페이지에 기록되었는지 확인하세요.

live 메소드는
jquery

의 이전 버전에서만 사용할 수 있습니다. on 메소드는 페이지의 기존 태그만 사용할 수 있습니다.

향후 요소를 얻으려면 특정 작성 방법만 사용할 수 있습니다.

on을 사용하여 바인딩할 때 td가 이미 돔에 존재하는지 확인하세요..
또한...live가 문서에 바인딩되어 있기 때문에..문서는 언제든지 존재합니다. .

당신이 사용하는 이벤트는 td에 바인딩되어 있습니다. td가 존재하지 않으면 확실히 바인딩되지 않습니다.


이벤트 프록시 메커니즘에 대해 자세히 알아보세요.

$("body").on("click","td a.topic_a",function(){
alert("Aha!");
});
로그인 후 복사

The 앞으로 추가될 요소에는 < ;td>

가 포함된 경우 이벤트 프록시를 $("td")에 바인딩할 수 없습니다.

이벤트 프록시는 상위 요소에 바인딩되어야 합니다.
예를 들어

또는

$("body").on("click","a",function(){
alert("Aha!");
});
로그인 후 복사
로그인 후 복사

위 내용은 jquery에서 live 메소드를 on 메소드로 대체하는 문제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!