我想知道是否可以创建一个元素数组,然后使用通配符创建一个事件监听器,当这些元素与这些元素进行交互时将触发该通配符。这可能是一个样本:
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
}
}
答案 0 :(得分:0)
我不确定你的意思是"通配符",但简短的回答是:不,它不是。
您必须迭代数组并将处理程序绑定到每个元素。在处理程序内部,您可以使用this
来引用处理程序绑定的元素。
答案 1 :(得分:0)
不是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/