我发现自己经常需要绑定(bind)一个事件处理程序,并立即在 jQuery 中执行该处理程序。迄今为止,我一直在使用这种懒惰的人造模式来保持代码干燥:
$(...).bind('event', function() {
...
}).trigger('event');
今天就被这个坑了,因为其他的handler都已经绑定(bind)了event
,而且我这样触发事件的时候他们也被执行了,但是造成了很多问题,因为它们当时不应该被执行。
为了解决这个问题,我将模式更改为:
var handler = function() {
...
};
var element = $(...);
element.bind('event', handler);
handler.call(element);
这按照我期望的方式工作,但它丑陋得像罪过,而且相当冗长,所以我正在考虑将此模式封装到 jQuery 插件中:
$(...).bindAndExecute('event', function() { ... });
我在 jQuery.bind()
选项或任何其他方法中找不到与此等效的内容,但我可能错过了一些东西。有没有一种我没有想到的更简洁的方法?我不想重新发明轮子。
最佳答案
jQuery 支持namespacing your events 。这是一项非常有用的技术,当您想要取消绑定(bind)或触发一组特定的事件时,它会非常方便。
$(...).bind('event.myNamespace', function() {
...
}).trigger('event.myNamespace');
当您开发更大的应用程序或 jQuery 插件时,使用这种技术几乎是不可避免的(或者至少明智的人不会避免它)。
关于jQuery - 绑定(bind)并执行单个处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11420871/