【问题标题】:Get event name already being observed获取已被观察的事件名称
【发布时间】:2014-05-10 13:20:45
【问题描述】:

我需要检查元素上已附加/观察到的事件名称。

//foo is a button
var isEventObserved = ?// need help in this line
var evnName = ?;// how
If(isEventObserved && evnName === 'my:evn2')
{
     $('foo').observe('my:evn1', mymethod1};
}
else
{
   $('foo').observe('my:env2', mymethod2);
}

【问题讨论】:

  • 怎么不知道是不是已经附上了?你怎么连活动名称都不知道(click)?
  • 事件是动态附加的。我还更改了代码以显示我的真正问题

标签: javascript prototypejs dom-events


【解决方案1】:

这就是你要找的东西

Event.cache[$('foo')._prototypeUID] 列出了为元素注册的事件。

Event.cache[$('foo')._prototypeUID]['element'] 是对被观察元素的引用,对象中的其余属性是在元素上注册的事件(自定义或原生)

所以根据你的具体情况

if(Event.cache[$('foo')._prototypeUID]['my:evn2'] != undefined)
{
    $('foo').observe('my:evn1', mymethod1);
}
else
{
    $('foo').observe('my:env2', mymethod2);
}

请注意,我使用最新版本的 Prototype 1.7.2 对此进行了测试

【讨论】:

  • 它确实可以在 PrototypeJS 1.7.1 中使用,请参阅此处的小提琴 jsfiddle.net/xdN5X 但如果您从上面复制和粘贴 - 我注意到我犯了一个错字并修复了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
相关资源
最近更新 更多