> 웹 프론트엔드 > JS 튜토리얼 > 클릭을 사용하여 jquery에 의해 바인딩된 이벤트가 유효하지 않은 이유는 무엇입니까?

클릭을 사용하여 jquery에 의해 바인딩된 이벤트가 유효하지 않은 이유는 무엇입니까?

黄舟
풀어 주다: 2017-06-27 10:14:24
원래의
2336명이 탐색했습니다.

jquery클릭을 사용하여 이벤트를 바인딩하는 것은 유효하지 않습니다

$(this).children(":last").prev().after("<div class=&#39;bounty-add&#39;><a target=&#39;_blank&#39; href=&#39;bounties.php#/p=add&XID=" + playerId + "&#39;>[Bounty]</a></div>"); 
$(this).children(":last").prev().after("<div class=&#39;info-add&#39;><a href=&#39;#&#39;>[Refresh]</a></div>");        
$("div.bounty-add").css(addStyle);
$("div.info-add").css(addStyle);
         
         
$(this).children(":last").prev().children("a").click(function() {
   alert("Hello");
});
로그인 후 복사

관련 기본 코드는 위와 같습니다. 새로 고침 요소는 원활하게 얻을 수 있지만 바운드 클릭 이벤트는 크롬 "개발자"에서 유효하지 않습니다. 도구" "이벤트 리스너"도 유효한 바인딩을 찾을 수 없습니다.
위의 기본 코드에서 추가한 DOM은 모두 유효합니다. 외부 레이어는 각각 2개의루프이지만 바인딩 단계를 포함하여 모든 코드가 원활하게 실행될 수 있어야 한다고 생각합니다. 실행이 완료된 후 a 요소를 클릭해도 동작하지 않고, 바인딩된 함수를 찾을 수 없습니다. . . . . . .

$(this).children(":last").prev().children("a").on("click",function() {
   alert("Hello");
});
로그인 후 복사
로그인 후 복사

on 저도 해봤는데 이 둘은 기본적으로 똑같은 것 같죠?
a 요소 자체에는 클릭 가능한 속성이 있으므로 클릭한 후에도 href='#'와 같은 원래 이벤트에 계속 응답하고 주소 표시줄 끝에 #이 추가됩니다. . . . 원래 이벤트가 나중에 추가된 이벤트를 덮어쓰기 때문인지 궁금합니다. . . . . .

이전 바인딩은

$(this).children(":last").prev().children("a").on("click",function() {
   alert("Hello");
});
로그인 후 복사
로그인 후 복사

일반 클릭 바인딩과 동일
이렇게 바인딩해 보세요

$(this).on("click",".info-add a",function() {
   alert("Hello");
});
로그인 후 복사

요소가 동적으로 생성되나요?
그렇다면 라이브 또는 델리게이트 바인딩을 사용하세요

live jquery1.9가 제거되었습니다. 이제 요소를 찾을 수 없거나 바인딩할 수 없다는 것이 아니라 바인딩 후에 유효하지 않다는 것입니다.
클릭 리스너에도 포함된 a를 p 요소로 직접 변경했지만, 어떠한 경우에도 alter("hello");가 실행될 수 없습니다. . . . . .

먼저 firebug를 사용하여 페이지에 스크립트 오류가 있는지 확인하세요
다시 코드에서 a 요소를 찾는지 확인하세요
마지막으로.

$(document).on("click",".info-add",function(){
alert("ok")
})
로그인 후 복사

를 사용해도 됩니다. 작동하지 않으면 전체 코드를 보내주세요

위 내용은 클릭을 사용하여 jquery에 의해 바인딩된 이벤트가 유효하지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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