没有绑定到DOM元素的jQuery中的自定义事件? [英] Custom event in jQuery that isn't bound to a DOM element?

查看:130
本文介绍了没有绑定到DOM元素的jQuery中的自定义事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很好奇,如果可能在jQuery中创建一个没有绑定到DOM元素的自定义事件。



我非常喜欢jQuery到YUI,但是在我喜欢的YUI中有一件事,那就是创建自定义事件,并能够稍后订阅。



例如,这创建一个绑定到变量,而不是DOM元素:

  var myevent = new YAHOO.util.CustomEvent(mycustomevent); 

我一直在为jQuery阅读的所有示例和文档都需要如下所示:

  $('body')bind('mycustomevent',function(){
// do stuff
}) ;


解决方案

您可以在jQuery中触发这样的自定义全局事件:

  jQuery.event.trigger('mycustomevent',[arg1,arg2,arg3]); 

这些将触发任何元素。



由于jQuery是围绕DOM对象构建的,因此您必须将事件绑定到DOM对象。你可能会找到一些方法绑定事件没有元素(你做了),但这不是一个支持的方法。



正如您在自己的答案中写的,你可以如果您不想将其绑定到单个页面元素,请将事件绑定到全局DOM对象:

  $ ).bind('mycustomevent',function(e,arg1,arg2,arg3){/ * ... * /}); 


I'm curious if its possible to create a custom event in jQuery that isn't bound to a DOM element.

I greatly prefer jQuery to YUI but there is one thing in YUI that I like, which is creating custom events and being able to subscribe to them later.

For example, this creates an event that is bound to a variable, not to a DOM element:

var myevent = new YAHOO.util.CustomEvent("mycustomevent");

All of the examples and documentation I have been reading for jQuery require something like:

$('body').bind('mycustomevent', function(){
    //do stuff
});

解决方案

You can trigger custom global events like this in jQuery:

jQuery.event.trigger('mycustomevent', [arg1, arg2, arg3]);

These will trigger for any element.

Since jQuery is built around DOM objects, you have to bind your events to DOM objects. You can probably find some way to bind events without an element too (you did), but that's not a supported methodology.

As you wrote in your own answer, you can bind your event to a global DOM object if you don't want to bind it to an individual page element:

$(document).bind('mycustomevent', function (e, arg1, arg2, arg3) { /* ... */ });

这篇关于没有绑定到DOM元素的jQuery中的自定义事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆