相关疑难解决方法(0)

如何列出JavaScript对象的属性?

假设我创建了一个对象:

var myObject =
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
Run Code Online (Sandbox Code Playgroud)

检索属性名称列表的最佳方法是什么?即我想最终得到一些变量'键',这样:

keys == ["ircEvent", "method", "regex"]
Run Code Online (Sandbox Code Playgroud)

javascript

807
推荐指数
15
解决办法
71万
查看次数

如何为javascript中的所有事件添加事件侦听器而不单独列出它们?

我想使用通配符完成以下代码(我认为不存在?)

myObject.element = document.getElementsByClassName('js-myObject');
myObject.element.addEventListener('click', myObject.click);
myObject.element.addEventListener('mouseover', myObject.mouseover);
//etc..
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有以下内容

myObject.controller = function(e){
   if( (e.type in myObject) && (typeof myObject[e.type] ==='function') ){
      myObject[e.type](e);
   }
};

//but the listeners still have to be assigned as such
myObject.element = document.getElementsByClassName('js-myObject');
myObject.element.addEventListener('click', myObject.controller);
myObject.element.addEventListener('mouseover', myObject.controller);
//etc...


// but I want to do (and it doesn't work)
myObject.element.addEventListener('*', myObject.controller);
Run Code Online (Sandbox Code Playgroud)

除了事件数组和 foreach 语句之外的方法有什么建议吗?

编辑,我目前的解决方案

我已经接受了下面的答案(没有可用的通配符,解析可能有数百个事件是个坏主意)

对于那些寻找类似功能的人,我已经确定了以下方法,至少现在是这样。

for(var prop in myObject){
  if (!myObject.hasOwnProperty(prop){continue;}
  if (typeof myObject[prop] !== 'function'){continue;}
  myObject.element.addEventListener(prop, myObject[prop]);
}
Run Code Online (Sandbox Code Playgroud)

好处是自定义事件的处理程序,我不必返回并为其添加侦听器。缺点是我必须确保在定义每个 myObject.someEvent() 之后调用此函数。我在 myObject.init() 中调用它;这对我来说很好。请注意,此解决方案不符合我以前的规范,因为它使用了 …

javascript oop model-view-controller

10
推荐指数
4
解决办法
2万
查看次数

是否可以一次为元素的所有事件分配防止默认值?

可能重复:
jQuery - 如何绑定DOM元素上的所有事件?

想象一下,如果我们想让一些元素完全不可分割.

当然,我们可以为click事件绑定一个防止默认值,如下所示:

$('form *').bind('click', function(event) {
    event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

但这只是一个事件,还有更多,如悬停,焦点,选择启动等等.

我们可以指定他们都在像"点击重点悬停DBLCLICK模糊选择开始"一条线,但是这并没有太大的意义,是不容易保持.

那么,是否可以绑定事件监听器而不区分事件的类型?也许一些原生的JavaScript听众允许它?

javascript jquery events

6
推荐指数
1
解决办法
2656
查看次数

标签 统计

javascript ×3

events ×1

jquery ×1

model-view-controller ×1

oop ×1