Unbind onchange而不触发它

时间:2013-06-03 15:10:41

标签: javascript jquery

我有一些控件,每个控件都会更改其他控件。为了防止递归,我曾想过在事件处理程序开始时取消绑定onchange事件(一个处理程序由相关控件共享),然后在更新依赖项后重新绑定它。涉及的所有控件都使用DateBoundControl类进行标记,以方便参考,我已经验证了jquery表达式返回了预期的控件。

问题代码如下所示:

function onDateBoundChange(evt) {
  $(".DateBoundControl").change();
  //do stuff to other controls that use this change handler
  $(".DateBoundControl").change(onDateBoundChange);
}

但是,$(".DateBoundControl").change();似乎触发更改事件。

有什么我错过的吗?我试图解除处理程序的绑定是否有一些缺陷?

2 个答案:

答案 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);
}