早上要做一功能,checkbox被選取時,顯示隱藏的層,取消選取時,再隱藏選取的層。
初始程式碼如下:
$(function( {
$("#ischange").change(function() {
alert("checked");
});
});
搗騰了半天,竟然一點反應都沒有。百度了下,有高人指出上面幾行程式碼在Firefox等瀏覽器中可以正常運行,即你選中復選框或取消複選框都會彈出一個對話框,但是在IE中卻不會正常執行,即選取或取消複選框不會立即彈出對話框。
必須在選取或取消複選框之後再點擊除了複選框之外的任何一個地方,據說是因為IE會等到複選框失去焦點之後才會觸發change事件。
改進後的程式碼如下:
程式碼如下:
$(function (){
if ($.browser.msie) {
$('input:checkbox').click(function () {
this.blur();
this.focus() ;
});
};
$("#ischange").change(function() {
alert("checked");
});
}) ; 補充
:當改變複選框的值後,IE在等待失去焦點,但是click事件是立即觸發的,因此利用click事件讓複選框失去焦點,這樣就會觸發chang事件了,然後再把焦點重新轉移到該複選框上。
複製程式碼
程式碼如下:
,
複製代碼
程式碼如下:
$(document).ready(function(){
$("testCheckbox").change(function() {
alert("Option changed!" );
});
});
複製程式碼
程式碼如下:
$(function () {if ($.browser.msie) {$('input: checkbox').click(function () { this.blur(); this.focus(); }); }}); 以上程式碼只要把checkbox就可以適用於radio, 以上程式碼的原理是:當改變複選框的值後,IE在等待失去焦點,但是click事件是立即觸發的,因此利用click事件讓複選框失去焦點,這樣就會觸發chang事件了,然後再把焦點重新轉移到該複選框上。有人可能會問為什麼不直接用click事件來代替change事件,對於checkbox來說,click事件和change都可以完成同樣的功能,但是對於radio來說就不一樣了,你可以連續點擊同一個radio而值不變,這時就會不停的觸發click事件而不會觸發change事件。