Javascript 为什么` on`处理程序调用的顺序在角度上不符合顺序?

Javascript 为什么` on`处理程序调用的顺序在角度上不符合顺序?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,这是我的密码 function linkFunc(scope, element, attr){ var clickedElsewhere = false; $document.on('click', function(){ clickedElsewhere = false; console.log('inside document'); }); element.on('c

这是我的密码

    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`
`clickedElseWhere = false`
控制台输出

inside element
inside document
inside document
当我在我的元素外单击时,这里是结果

`clickedElseWhere = false`
`clickedElseWhere = false`
控制台输出

inside element
inside document
inside document

为什么会发生这种行为?

dom事件就是这样工作的,它们会冒泡出来,您的元素就在文档中。如果要停止冒泡(传播),也必须告诉它:

    element.on('click', function(event){
        event.stopPropagation();
        clickedElsewhere = true;
        console.log('inside element');
    });
这将使您的文档事件不会触发