我在JQuery中遇到了一些與事件綁定有關的奇怪問題。我們有很多輸入,我們想知道它們的值是否由用戶更改。我重視他們的活動,這些方式:綁定之前執行的事件和綁定後觸發的事件
$(document).on("change", ".myClass", changed);
但有時我們必須執行在這些領域進行自動更改,所以我取消綁定這些事件,執行的變化,爲了避免這些更新變化triggerings再次綁定的事件:
$(document).off("change", ".myClass");
$(".myClass").val(whatever);
$(document).on("change", ".myClass", changed);
但是,如果我們點擊其中一個輸入這最後的過程中,我們得到的是後即使現場沒有附加任何事件,當它被更新的變化事件觸發。我們知道,改變事件不會發生,直到領域失去焦點,但我們不理解這種行爲。
任何幫助或澄清將是apreciated。
在此先感謝。
對不起,我的意思是改變而不是改變()。
您需要爲委託事件處理函數提供函數的*引用*,而不是函數的*返回值*:'$(document).on('change','.myClass',changed)'。還要注意,無論如何你的邏輯是沒有意義的,因爲以編程方式改變一個元素的值並不會引發'change'事件,參見:https://jsfiddle.net/2185v3z5/ –
我在你的例子中看到你是對的,但是事件的發生在我的代碼中發生,所以我必須假設我有一個我從未見過的問題。非常感謝你的幫助。 – MKP