我很好奇是否可以在jQuery中创建一个不绑定到DOM元素的自定义事件。
与YUI相比,我更喜欢jQuery,但YUI中有一件事是我喜欢的,那就是创建自定义事件,并能够在以后订阅它们。
例如,这会创建一个绑定到变量而不是DOM元素的事件:
var myevent = new YAHOO.util.CustomEvent("mycustomevent");
我一直在阅读的所有jQuery示例和文档都需要类似以下内容:
$('body').bind('mycustomevent', function(){
//do stuff
});
发布于 2009-10-12 08:21:29
您可以在jQuery中触发如下自定义全局事件:
jQuery.event.trigger('mycustomevent', [arg1, arg2, arg3]);
这些将在任何元素上触发。
由于jQuery是围绕DOM对象构建的,因此您必须将事件绑定到DOM对象。您可能也可以找到一些方法来绑定没有元素的事件(您确实做到了),但这不是一种受支持的方法。
正如您在自己的答案中所写的,如果您不想将事件绑定到单个页面元素,则可以将事件绑定到全局DOM对象:
$(document).bind('mycustomevent', function (e, arg1, arg2, arg3) { /* ... */ });
发布于 2009-10-12 21:01:39
对于未来的读者来说,这样做是相当简单的。在发布了我的问题后,我做了进一步的研究。不幸的是,其他评论者没有一个是正确的。
要绑定自定义事件:
$().bind('mycustomevent', function(){
//code here
});
此外,您还可以将数据构建到稍后可访问的事件对象中:
$({mydata:'testdata'}).bind('mycustomevent',function(){
//code here
});
发布于 2010-12-16 01:42:58
在jQuery 1.4.4中删除了对非dom元素的绑定。
https://stackoverflow.com/questions/1553342
复制相似问题