Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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 改变活动目标_Javascript_Html_Javascript Events - Fatal编程技术网

Javascript 改变活动目标

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

我有以下html:

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