我有要求在哪里需要跟踪对特定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