Javascript 代码>在条件之外工作?答案没有那么简单,所以我在编辑中回答。我希望我说得够清楚:)啊。。。我想我明白了。event.target不是(一定)添加了事件侦听器的元素吗?我认为在这种情况下,event.target和this本质上是相同的。相反,在这种情况下,

Javascript 代码>在条件之外工作?答案没有那么简单,所以我在编辑中回答。我希望我说得够清楚:)啊。。。我想我明白了。event.target不是(一定)添加了事件侦听器的元素吗?我认为在这种情况下,event.target和this本质上是相同的。相反,在这种情况下,,javascript,addeventlistener,stoppropagation,Javascript,Addeventlistener,Stoppropagation,代码>在条件之外工作?答案没有那么简单,所以我在编辑中回答。我希望我说得够清楚:)啊。。。我想我明白了。event.target不是(一定)添加了事件侦听器的元素吗?我认为在这种情况下,event.target和this本质上是相同的。相反,在这种情况下,event.target是点击最深的元素——即使那只是一片叶子。是吗?是的。event.target是触发事件的元素(最深)。不要与event.currentTarget混淆@Rounin没有问题。这是一场有趣的比赛。另外,在事件处理程序中使用


代码>在条件之外工作?答案没有那么简单,所以我在编辑中回答。我希望我说得够清楚:)啊。。。我想我明白了。event.target不是(一定)添加了事件侦听器的元素吗?我认为在这种情况下,
event.target
this
本质上是相同的。相反,在这种情况下,
event.target
是点击最深的元素——即使那只是一片叶子。是吗?是的。event.target是触发事件的元素(最深)。不要与event.currentTarget混淆@Rounin没有问题。这是一场有趣的比赛。另外,在事件处理程序中使用“this”关键字时要小心。它实际上是对event.currentTarget的引用,通常会产生副作用。
<ul>
    <li>One</li>
    <li class="contains-submenu">Two
        <ul>
            <li>Two A</li>
            <li class="contains-submenu">Two B
                <ul>
                    <li>Two B I</li>
                    <li>Two B II</li>
                    <li>Two B III</li>
                </ul>
            </li>
            <li>Two C</li>
        </ul>
    </li>
    <li>Three</li>
    <li class="contains-submenu">Four
        <ul>
            <li>Four A</li>
            <li class="contains-submenu">Four B
                <ul>
                    <li>Four B I</li>
                    <li>Four B II</li>
                    <li>Four B III</li>
                </ul>
            </li>
            <li>Four C</li>
        </ul>
    </li>
</ul>
var activateToggle = true;

function toggleSubmenu() {
    if (activateToggle === true) {
        this.classList.toggle('show-submenu');
        activateToggle = false;
    }

    setTimeout(function(){activateToggle = true}, 100);
}