Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用通配符在JS中搜索数组_Javascript_Arrays_Wildcard_Elements - Fatal编程技术网

Javascript 使用通配符在JS中搜索数组

Javascript 使用通配符在JS中搜索数组,javascript,arrays,wildcard,elements,Javascript,Arrays,Wildcard,Elements,我想知道是否有可能创建一个元素数组,然后使用通配符创建一个事件侦听器,当这些元素中的任何一个与之交互时,通配符都会触发事件侦听器。这可能是什么样的示例: var e = new Array(); e[1] = document.getElementById('some-element'); e[2] = document.getElementById('some-other-element'); e.onmouseup = function() { if(e == e[1]) {

我想知道是否有可能创建一个元素数组,然后使用通配符创建一个事件侦听器,当这些元素中的任何一个与之交互时,通配符都会触发事件侦听器。这可能是什么样的示例:

var e = new Array();
e[1] = document.getElementById('some-element');
e[2] = document.getElementById('some-other-element');

e.onmouseup = function() {
  if(e == e[1]) {
    //Some code here
  } else if (e == e[2]) {
    //Some code here
  } 
}

我不知道你说的“通配符”是什么意思,但简单的回答是:不,不是


您必须迭代数组并将处理程序绑定到每个元素。在处理程序内部,您可以使用
this
引用处理程序绑定到的元素。

实际上不是
通配符,而是允许您为所有元素仅绑定一个事件处理程序的内容-事件委派:

document.body.addEventListener('mouseup', function (event) {
    var target = event.target;
    if (target == e[1]) {
        //Some code here
        alert('some-element');
    } else if (target == e[2]) {
        //Some code here
        alert('some-other-element');
    }
}, false);
这是因为事件会在DOM树中冒泡,直到它到达检测到它的
body
,然后从那里调度必要的操作


下面是一个使用这种方法的演示:

使用
addEventListener
方法而不是元素属性(
onmouseup
)@hindsmost:我不知道数组支持
addEventListener
@Felix Kling不需要这样的支持。只需迭代元素数组并应用
addEventListener
@hindsmost:从您的第一条评论中看不清楚。@Felix Kling是的,但这只是一个注释,不是解决方案