我有一些控件,每个控件都会更改其他控件。为了防止递归,我曾想过在事件处理程序开始时取消绑定onchange事件(一个处理程序由相关控件共享),然后在更新依赖项后重新绑定它。涉及的所有控件都使用DateBoundControl类进行标记,以方便参考,我已经验证了jquery表达式返回了预期的控件。
问题代码如下所示:
function onDateBoundChange(evt) {
$(".DateBoundControl").change();
//do stuff to other controls that use this change handler
$(".DateBoundControl").change(onDateBoundChange);
}
但是,$(".DateBoundControl").change();
似乎触发更改事件。
有什么我错过的吗?我试图解除处理程序的绑定是否有一些缺陷?
答案 0 :(得分:1)
然而,$(“。DateBoundControl”)。change();似乎触发了变革事件。
作为文档clearly states,这正是它应该做的。
您正在寻找解除事件绑定的off()
method。
答案 1 :(得分:1)
试试这个:
function onDateBoundChange(evt) {
$(".DateBoundControl").unbind('change', onDateBoundChange);
//do stuff to other controls that use this change handler
$(".DateBoundControl").bind('change', onDateBoundChange);
}