チェックボックスclick
イベントでevent.stopPropagation()
が発生すると、関連するchange
イベントがIE9より前にIEで発生するのを防ぐことができます。checkbox clickイベントのevent.stopPropagationは、IE8以前でchangeイベントが発生しないようにしますか?
変更イベント以前IE8でない火を行い、以下のjQueryブロックと
<input type="checkbox" value="Y" checked>Test
<div id="output">Logging...</div>
(以下のコードは、jsFiddleである)、それはIE9(およびクローム)で火を行います。
$(document).ready(function() {
$("input").click(function(event) {
event.stopPropagation();
$("#output").append("<pre>click</pre>");
});
$("input").change(function(event) {
$("#output").append("<pre>change</pre>");
});
});
ChromeとIE9は与える:
Logging...
change
click
change
click
change
click
IE8一方
およびそれ以前は与える:
Logging...
click
click
click
をしかし、私は予想通り、すべての作品の取り扱い 'IE9の前に' 特定入れた場合、次のjqueryのブロックで
:
$(document).ready(function() {
$("input").click(function(event) {
event.stopPropagation();
$("#output").append("<pre>click</pre>");
// fix event bubbling before IE9
if ($.browser.msie) {
if (parseInt($.browser.version, 10) < 9) {
$(this).trigger("change");
}
}
});
$("input").change(function(event) {
$("#output").append("<pre>change</pre>");
});
});
は、これは予想される動作ですか?
期待していますか?いいえ、私は正直なところ、IEの以前のバージョンは非常にばかげているようなことをしても驚くことはありません。 –