关于 stackoverflow 的另一个问题指出,应该可以使用以下方式触发所有列表对象上的事件:
$.event.trigger('customEvent');
但是,这似乎对我不起作用,例如:
$('body').bind('customEvent', function(){ alert('Working!'); });
我是在做完全错误的事情,还是这个强大的功能被禁用了?
关于 stackoverflow 的另一个问题指出,应该可以使用以下方式触发所有列表对象上的事件:
$.event.trigger('customEvent');
但是,这似乎对我不起作用,例如:
$('body').bind('customEvent', function(){ alert('Working!'); });
我是在做完全错误的事情,还是这个强大的功能被禁用了?
看起来该功能已被删除。浏览标签,我设法在 v1.8b1 中找到了这个 TODO:
// TODO: 停止嘲弄数据缓存;删除全局事件并始终附加到文档
从v1.9.0 开始,它已被删除。
没有什么可以阻止您根据此处的旧源代码 (v1.6.2)来实现它,但看起来它正在做一些顽皮的事情,jQuery.cache
所以最好不要它或想出另一个解决方案。
$('*').trigger('customEvent');
也许?( jsFiddle )
或者一种更有效的方法来跟踪每个订阅并调用.trigger()
它。
var customSubs;
$.fn.subscribeCustom = function (fn) {
this.on('customEvent', fn);
if (!customSubs)
customSubs = this;
else
customSubs = customSubs.add(this);
};
$('span').subscribeCustom(function () {
alert('span!');
});
$('div').subscribeCustom(function () {
alert('div!');
});
customSubs.trigger('customEvent');