gpt4 book ai didi

javascript - 为什么 `on` 处理程序调用的顺序不按 Angular 排列?

转载 作者:行者123 更新时间:2023-11-29 10:36:24 24 4
gpt4 key购买 nike

这是我的代码

    function linkFunc(scope, element, attr){
var clickedElsewhere = false;

$document.on('click', function(){
clickedElsewhere = false;
console.log('inside document');

});

element.on('click', function(){
clickedElsewhere = true;
console.log('inside element');
});

}

我正在尝试检测点击我的元素还是点击我的元素之外。

当我点击我的元素时,这里是结果

`clickedElseWhere = false`

控制台输出

inside element
inside document

当我在我的元素之外点击时,这里是结果

`clickedElseWhere = false`

控制台输出

inside document

为什么会发生这种行为?

最佳答案

这就是 dom 事件的工作原理,它们冒泡并且您的元素在文档中。如果你想停止冒泡(传播),你也必须告诉它:

    element.on('click', function(event){
event.stopPropagation();
clickedElsewhere = true;
console.log('inside element');
});

这将使您的文档事件不会触发。

关于javascript - 为什么 `on` 处理程序调用的顺序不按 Angular 排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com