나는 HTML를 추가하는 기능 onclick
있습니다. 그리고 그 작동하지만 다른 클래스를 추가했습니다 .test
및 클릭하면 함수가 트리거되지 않습니다. 왜 ? 감사합니다. .APPEND의 HTML은
바이올린 : http://jsfiddle.net/csL8G/3/
나는 HTML를 추가하는 기능 onclick
있습니다. 그리고 그 작동하지만 다른 클래스를 추가했습니다 .test
및 클릭하면 함수가 트리거되지 않습니다. 왜 ? 감사합니다. .APPEND의 HTML은
바이올린 : http://jsfiddle.net/csL8G/3/
jQuery를 사용하는 경우 jQuery.on()
메서드를 사용할 수 있습니다. 1.7+
//.on(events [, selector] [, data], handler(eventObject))
$(document).on('click', '.test', function(){
//....
});
이전 버전의 u는 .live()
또는 .bind()
방법을 사용할 수 있습니다.
사용이 동적으로 추가 .test 요소를 확인하기 위해 미만 1.8은 다음 라이브 대신 사용하면 jQuery를 사용하는 경우
jQuery("body").on('click', '.test', function() {
jQuery(this).prevAll("input").val("5");
jQuery(".after").append("<div><input /><a class='.test'>click doesn't work !</a></div>");
});
: 기본적으로
jQuery('.test').live('click', function() { ...
이유는 DOM이로드 될 때 초기 클릭 기능이 문서의 이미 요소에 적용되기 때문입니다. 하지만 on() 핸들러를 사용하면 영역에 내용이 테스트 클래스가 있고 click 이벤트가 작동하도록 만드는 리스너를 설정합니다.
이봐 당신이 쓴 당신의 HTML을 확인합니다
<a class=".test"></a>
는 단지 class="test"
jQuery("body").on('click', '.test', function() {
jQuery(this).prevAll("input").val("5");
jQuery(".after").append("<div><input /><a class='test'>click doesn't work !</a></div>");
});
완벽하게 작동합니다. 감사합니다! – Kaherdin
@Kaherdin 내 답변은 Talha 이전에 게시되었으며 on() 영역을 body 태그로 제한한다는 것과 정말로 동일합니다. 그런데 왜이 대답을 선호합니까? – jtheman
@Kaherdin -이 접근 방식은'document'의 모든 요소에 click 이벤트 처리기를 추가한다는 점에 유의하십시오. 만약 당신의 링크가 모두 컨테이너 요소 안에 있다면,'document'를 그것을위한 선택자 (예를 들어'# container')로 바꾸는 것이 오버 헤드가 적어 지므로 더 나은 방법입니다. – Archer