为什么`on`处理程序的序列在角度中不按顺序调用?

时间:2016-03-02 21:05:07

标签: javascript jquery angularjs

这是我的代码

    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

为什么会出现这种情况?

1 个答案:

答案 0 :(得分:3)

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

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

这将使您的文档事件无法触发。