这是我的代码
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
为什么会出现这种情况?
答案 0 :(得分:3)
这就是dom事件的工作原理,它们会冒泡并且你的元素在文档中。如果你想停止冒泡(传播),你也必须告诉它:
element.on('click', function(event){
event.stopPropagation();
clickedElsewhere = true;
console.log('inside element');
});
这将使您的文档事件无法触发。