현재 응용 프로그램을 jQuery 1.6.1 (이전 1.4.4)을 사용하도록 업그레이드 중이므로 .click()
이벤트가 자동으로 .change()
이벤트를 트리거하는 것으로 나타났습니다. 당신이 .change()
기능이 .click()
이벤트가 발생하지 불 때 1.4.4을 포함하는 경우 http://jsfiddle.net/wDKPN/jQuery .change() 이벤트가 최신 버전에서 .click()으로 트리거됩니까?
주의 사항 :
나는 여기에 간단한 예제를 만들었습니다. 그러나 1.6으로 전환 할 때.click()
이 발생하면
.change()
이벤트
은입니다.
두 질문 :
이 버그인가요?
.click()
을 프로그래밍 방식으로 트리거하면도 다른 이벤트를 발생시키지 않아야합니다 (예 : 사용자의 클릭을 "모방"하는 데 도움이되도록.blur()
및.focus()
도 자동으로 실행되는 것이 잘못된 것 같습니다). 적절한change()
이벤트 을 결합하는 저를위한 방법으로 다음 트리거 모두는 그 요소의click()
및change()
이벤트무엇입니까? 간단히
.click()
으로 전화를 걸고.change()
도 실행됩니까? 내 예전의 코드에서$('#myelement').change(function() { // do some stuff }); $('#myelement').click(); // both click and change will fire, yay!
$('#myelement').change(function() {
// do some stuff including ajax work
}).click().change();
그러나 1.6.1에서 내 논리는 두 번 발생합니다 (.click()
에 한 번, .change()
에 한 번). .change()
방아쇠를 제거하는 것에 의존 할 수 있습니까? jQuery가 이후 버전에서도 계속 이와 같은 방식으로 작동하기를 바랍니다.
, 나는 그것을 부를 것이다 ''버그 '보다. 체크 박스를 클릭하면 상태가 변경되므로 결과적으로 변경 이벤트를 트리거 할 수있는 완전히 유효한 이유가 있습니다. 내게 그것은 이전에 그렇게하지 않았다는 것이 이상하다. (그리고 [그 스레드가있다] (http://stackoverflow.com/questions/2161213/why-is-onchange-on-a-checkbox-not-fired) - 체크 박스가 간접적으로 변경된 경우). – mkilmanas
분명히, 나는 이것이 의도적이고 아마도 버그가 아니라는 것에 동의 할 수 있다고 생각합니다. 나는 그것이 업그레이드를 위해 이런 식으로 머물러 있기를 바란다. .. 그리고 우리는 그 다음에 다른 사건들에 대해 논할 수 없는가? 예를 들어, "사용자가 ** 체크 박스를 클릭하면 ** 변경해야합니다 **"라고 말하면됩니다. "사용자가 ** 체크 박스를 클릭하면 ** 포커스를 받아야합니다 **"라고 말할 수 있습니까? 그러나 .focus() 이벤트는 .click() .change()가 자동으로 실행되지 않습니다. –
흥미로운 사실, yopu는 checkbox/jQuery 및 이벤트 체인을 사용하여 이상한 동작을 기억하면서 IE (6?)에 대한 몇 가지 테스트를 수행 했습니까? 의사가 ".triggerHandler() 메서드로 인해 이벤트 제출의 기본 동작 (예 : 양식 제출)이 발생하지 않습니다."라고 말한 것처럼 triggerHandler ('클릭')도 확인 했습니까? 이제 실행을 변경 하시겠습니까? – regilero