0

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

问题代码如下所示:

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

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

有什么我错过的吗?我尝试解除绑定处理程序有什么缺陷吗?

4

2 回答 2

2

试试这个 :

function onDateBoundChange(evt) {
  $(".DateBoundControl").unbind('change', onDateBoundChange);
  //do stuff to other controls that use this change handler
  $(".DateBoundControl").bind('change', onDateBoundChange);
}
于 2013-06-03T15:12:54.860 回答
1

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

正如文档明确指出的那样,这正是它应该做的。

您正在寻找取消绑定事件的off()方法。

于 2013-06-03T15:12:04.883 回答