jQuery - 绑定并执行单个处理程序?

时间:2012-07-10 19:53:38

标签: jquery

我发现自己经常需要绑定一个事件处理程序,并立即在jQuery中执行该处理程序。到目前为止,我一直在使用这种懒惰的仿制模式来保持代码DRY:

$(...).bind('event', function() {
    ...
}).trigger('event');

今天我被这个咬了,因为其他处理程序已经绑定到event,并且当我以这种方式触发事件时它们也被执行,但是由于引起了很多问题,他们当时不应该被执行。

要解决此问题,我已将模式更改为:

var handler = function() {
    ...
};

var element = $(...);

element.bind('event', handler);
handler.call(element);

这是按照我的预期方式工作的,但它很丑陋,而且非常冗长,所以我正在考虑将这个模式封装到一个jQuery插件中:

$(...).bindAndExecute('event', function() { ... });

我在jQuery.bind()选项或任何其他方法中找不到相同的内容,但我可能错过了一些东西。有没有更简洁的方法来做这个我没有想到的?我不想重新发明轮子。

1 个答案:

答案 0 :(得分:3)

jQuery支持namespacing your events。这是一种非常有用的技术,当您想要解除绑定或触发特定事件组时非常方便。

$(...).bind('event.myNamespace', function() {
    ...
}).trigger('event.myNamespace');

当您开发更大的应用程序或jQuery插件时,使用这种技术几乎是不可避免的(或者至少是明智的人不会避免它)。

Quick jsFiddle Demo