【发布时间】:2015-04-15 10:43:44
【问题描述】:
我在理解自定义事件触发器时遇到了一些问题。我有一些代码可以触发所有元素上的自定义事件(根据文档)
$.event.trigger('modal:close',[$d]);
$d 是一个 jquery 对象
如果我像这样绑定到文档:
$(document).on('modal:close',function(event,element) {
console.log('Triggered');
});
然后我的处理程序被称为将“已触发”记录到控制台。但是,如果我将它绑定到这样的特定元素:
$("#foo").on('modal:close',function(event,element) {
console.log('Triggered');
});
然后触发器永远不会被捕获并且没有任何记录。
我是否遗漏了文档中 $.event.trigger('foo') 没有在所有可能正在侦听的元素上调用所述事件的内容?
提前致谢
【问题讨论】:
-
它似乎在小提琴中引发了两个元素的事件:jsfiddle.net/ogmo5dL5。您能否提供有关您的代码的更多信息。
-
他尝试用 $.event.trigger('modal:close',[$d]); 触发它仅触发记录。
-
你的代码和我的不一样。这是我在你的小提琴上更新的版本jsfiddle.net/ogmo5dL5/1
-
看来文档是错误的,并且在现代 jQuery 中无法触发所有元素。在这一点上,我已经实现了一个发布/订阅模式,并将继续使用它,直到找到更好的解决方案。