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

Using Wildcards to Search Arrays in JS

本文关键字:搜索 数组 JS 通配符      更新时间:2023-09-26

我想知道是否可以创建一个元素数组,然后使用通配符创建一个事件侦听器,该通配符将在与这些元素交互时触发。这可能看起来像什么样的示例:

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
  } 
}

不是真正的wildcard,而是允许您为所有元素只绑定一个事件处理程序的东西-事件委托:

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,并从那里调度必要的操作。

下面是一个使用这种方法的演示:http://jsfiddle.net/jwoxnn3d/

我不知道你说的"通配符"是什么意思,但简单的答案是:不,不是。

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