Javascript 在非dom元素上使用jquery开/关和触发器方法的陷阱是什么

Javascript 在非dom元素上使用jquery开/关和触发器方法的陷阱是什么,javascript,jquery,Javascript,Jquery,在非dom元素/常规js对象上使用jquery on/off方法和触发器执行时是否存在潜在的陷阱 谢谢不,您可以在常规对象上使用.on和.off,只要您记住它将向对象添加其他属性 var obj = {}; $(obj).on("mycustomevent",function(){ alert("mycustomevent triggered"); $(this).off("mycustomevent").trigger("mycustomevent"); }).trigger("my

在非dom元素/常规js对象上使用jquery on/off方法和触发器执行时是否存在潜在的陷阱


谢谢

不,您可以在常规对象上使用
.on
.off
,只要您记住它将向对象添加其他属性

var obj = {};

$(obj).on("mycustomevent",function(){
  alert("mycustomevent triggered");
  $(this).off("mycustomevent").trigger("mycustomevent");
}).trigger("mycustomevent"); // fires off one alert.

我必须问,在什么情况下将事件绑定到对象才有意义?为什么不给对象一个你可以调用的方法呢?

不,你可以在常规对象上使用
.on
.off
,只要你记住它会给对象添加额外的属性

var obj = {};

$(obj).on("mycustomevent",function(){
  alert("mycustomevent triggered");
  $(this).off("mycustomevent").trigger("mycustomevent");
}).trigger("mycustomevent"); // fires off one alert.

我必须问,在什么情况下将事件绑定到对象才有意义?为什么不给对象一个你可以调用的方法?

请提供具体的例子。还想知道是否有比使用jquery查询可观察模式/bind&trigger更好的解决方案请提供具体的例子。还想知道是否有比使用jquery查询可观察模式/bind&trigger更好的解决方案它是bind和trigger situationRight,但是您可以给对象方法,例如obj.addEvent(name,callback)或obj.on(name,callback),然后给对象另一个名为trigger的方法,该方法触发给定的事件名称。jQuery的新
$.Callbacks()
方法在这种设置中会有很大帮助。下面是我最近发布的一个答案,并附有一个示例:在这个答案中,我使用了一个类,但它可以同样容易地在一个对象上实现。它是bind和trigger situationRight,但您可以给出对象方法,例如obj.addEvent(name,callback)或者obj.on(name,callback),然后为对象提供另一个名为trigger的方法,该方法触发给定的事件名称。jQuery的新
$.Callbacks()
方法在这种设置中会有很大帮助。下面是我最近发布的一个答案,并给出了一个示例:在这个答案中,我使用了一个类,但它可以很容易地在对象上实现。