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是的,但这只是一个注释,不是解决方案