我有一個輸入和選擇框的表單,每個都有class="myClass"
。我也有以下腳本:jQuery更改事件被調用兩次
$(document).ready(function() {
$(".myClass").change(function() {
alert('bla');
})
});
我不明白爲什麼在選擇框或輸入框每次更改後,這個函數被調用兩次。 這裏有什麼問題?
感謝您的幫助!
我有一個輸入和選擇框的表單,每個都有class="myClass"
。我也有以下腳本:jQuery更改事件被調用兩次
$(document).ready(function() {
$(".myClass").change(function() {
alert('bla');
})
});
我不明白爲什麼在選擇框或輸入框每次更改後,這個函數被調用兩次。 這裏有什麼問題?
感謝您的幫助!
我只能想到的是,你在窗體本身使用相同的類。如果是這樣,請從表單標記中刪除myClass樣式。
更正: http://jsfiddle.net/rY6Gq/1/
不完善的雙重警報: http://jsfiddle.net/rY6Gq/
嘗試在Firebug調試代碼,而不是報警。它可能是失去焦點,並返回它導致出現兩個變化時,沒有兩個發生
加上我知道這發生在一個朋友,但我不知道他在當時使用的是什麼瀏覽器 – 2011-03-28 20:32:41
,如果這發生在IE瀏覽器,它可能是這個錯誤,因爲這是對我來說: http://bugs.jquery.com/ticket/6593
更新到jQuery的1.7.1爲我工作。
它發生在同一個類或任何你綁定的屬性也具有相同名稱父或子時。顯然,當你改變一個孩子的時候,父母也會發生變化(孩子的變化)。如果他們具有相同的類別或屬性,則應該觸發兩次。 例如,如果綁定到「myClass」,那麼它將被調用兩次。
<div class="myclass">
<select class="myClass"> </select>
</div>
非常感謝,因爲它是一個解決方案。在我的情況下,selectpicker生成一個與我的初始選擇標記相同的類 – syler 2016-04-29 07:51:01
e.stopImmediatePropagation前加
$("#some_id").unbind('change');
();是什麼爲我工作。
$(document).ready(function() {
$(".myClass").change(function(e) {
e.stopImmediatePropagation();
alert('bla');
})
});
顯示您的wntire表單代碼 – fl00r 2011-03-28 20:29:15
正如fl00r所示,這將有助於您查看更多的代碼。雙重函數調用通常是無意中將您的處理程序連接兩次的症狀。 – Ender 2011-03-28 20:34:13
謝謝你,Uberstein只是向我展示了我的錯誤 – Israel 2011-03-28 20:42:43