Javascript 改变活动目标
我有以下html:Javascript 改变活动目标,javascript,html,javascript-events,Javascript,Html,Javascript Events,我有以下html: <div id="div1"> <div id="div2"> </div> </div> 如果在div2上单击鼠标,则e.target是div2。在这种情况下,我希望target是div1。有可能吗?最简单的方法可能是沿着DOM树向上走,直到找到所需的元素 document.addEventListener('mousedown', function(e) { // start with the e
<div id="div1">
<div id="div2">
</div>
</div>
如果在div2上单击鼠标,则e.target是div2。在这种情况下,我希望target是div1。有可能吗?最简单的方法可能是沿着DOM树向上走,直到找到所需的元素
document.addEventListener('mousedown', function(e) {
// start with the element that was clicked.
var parent = e.target;
// loop while a parent exists, and it's not yet what we are looking for.
while (parent && parent.id !== 'div1') {
// We didn't find anything yet, so snag the next parent.
parent = parent.parentElement;
}
// When the loop exits, we either found the element we want,
// or we ran out of parents.
console.log(parent);
});
示例:在DOM中,可以指定将事件侦听器附加到哪个元素:
var div1 = document.getElementById('div1');
div1.addEventListener('mousedown',function(e){
console.log(e.target);
});
是的。使用像jQuery这样的支持库也容易得多。我不想使用jQueryWhat是您的最终目标?您是否需要为
div1
触发事件或以某种方式修改div1
?尝试使用e.target.parentElement获取div1我正在获取e.target的属性,这取决于该属性,我决定我是否可以执行某些操作(div1具有该属性)这是一个不错的决定,但我有多个div,如div1,这在我的情况下并不有用。无论如何,非常感谢,但如果想要“现场”式的活动授权,这是行不通的。如果您想绑定一个处理程序,然后在页面中添加十几个#div1
,这将无法处理单击。谢谢Alex,您的回答非常有用
var div1 = document.getElementById('div1');
div1.addEventListener('mousedown',function(e){
console.log(e.target);
});