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');
});
这将使您的文档事件不会触发