我有要求在哪裏需要跟蹤對特定div中輸入字段的更改,並在發生了某些更改時觸發事件。jquery從多個輸入字段一次去除綁定事件
我使用下面的代碼來實現這一目標
$('div.dc2-content:eq(1) input:not([aria-readonly])').each(function(){
var $elem = $(this);
$elem.data("oldval",$elem.val());
$elem.on("change",{ctx:this},setItemStatus);
});
這是工作正常,但的要求,第二部分是該事件應該只觸發一次。這意味着
- 當第一個字段被更改觸發事件。
- 然後從所有輸入字段
對於這一部分,我寫了解除綁定的變化下面的函數
function setItemStatus(event){
var $el = $(this);
if($el.val() != $el.data("oldval")){
console.log("Invoke Update Method");
//unbind the events so that it doesn't trigger the update twice.
$('div.dc2-content:eq(1) input:not([aria-readonly])').each(function(){
var $elm = $(this);
$elm.off("change");
});
}
}
但即使這種改變事件不是unbinded如果我做出改變它仍然觸發表單的任何其他字段。
我知道我可以把條件停止執行代碼,但我想取消綁定。
試試.unbind()?而不是.off()。 – NomNomNom 2014-08-29 07:11:38
是的,它沒有奏效。問題在於函數中的選擇器沒有選擇任何輸入標籤。它從不觸發關閉代碼。我正在使用相同的選擇器,它在綁定中工作正常。 – Neel 2014-08-29 09:54:10