我将 jQuery 与它的小部件工厂一起使用,并使用自定义事件来处理我的应用程序中的事件。
这意味着我所有的事件绑定看起来很像:
//...in the widget factory code
$(this.element).addClass('customEventClass');
$(this.element).bind('mysite.loadNextPage', $.proxy(this, 'loadNextPage');
并且通过执行以下操作触发事件:
$('.customEventClass').trigger('mysite.loadNextPage');
因为事件直接绑定到需要接收它们的元素,所以我不需要让这些自定义事件通过 DOM 冒泡。我知道我可以通过在事件处理程序代码中执行此操作来检查偶数是否冒泡:
if (event.target != event.currentTarget) {
event.stopPropagation();
event.preventDefault();
return;
}
但目前,由于大多数正在侦听自定义事件的元素没有为“mysite.loadNextPage”注册的处理程序,因此生成了 51 个事件,其中只有 1 个事件实际执行任何操作。有没有办法:
- 告诉 jQuery 根本不要冒泡这些事件或
- 为所有具有类“customEventClass”的 DOM 对象添加一个默认的“停止传播”处理程序,以阻止它们冒泡他们没有特定处理程序的事件。
或者是否有任何其他好的做法可以仅在对这些事件感兴趣的元素上触发事件,而不是为对这些事件不感兴趣的元素触发大量事件。