jquery클릭을 사용하여 이벤트를 바인딩하는 것은 유효하지 않습니다
$(this).children(":last").prev().after("<div class='bounty-add'><a target='_blank' href='bounties.php#/p=add&XID=" + playerId + "'>[Bounty]</a></div>"); $(this).children(":last").prev().after("<div class='info-add'><a href='#'>[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 중국어 웹사이트의 기타 관련 기사를 참조하세요!