【发布时间】:2015-10-28 11:18:57
【问题描述】:
我确定有人已经遇到过这样的问题,但不幸的是我找不到答案。
window.onload = function (e) {
var foo = document.getElementById('foo');
foo.addEventListener('click', function(e) {
e.stopPropagation();
e.preventDefault();
alert('foo');
});
document.body.addEventListener('click', function(e) {
alert('body');
});
};
#foo {
width: 200px;
height: 200px;
background-color: red;
cursor: pointer;
}
body,
html {
width: 100%;
height: 100%;
}
<div id="foo">Click me</div>
请参阅jsfiddle 和 我将逐步描述我的问题:
1) 点击红色的 div 2) 不要松开鼠标键拖到外面
如您所见,主体点击功能已触发。这就是我要禁用的。我想检测用户是否在 div 内部单击,然后他/她将其拖到外部,则一定不会发生任何事情!
【问题讨论】:
-
event.stopImmediatePropagation()可以特别解决这个问题。 -
我认为你在玩错误的事件!尝试使用 mousedown 和 mouseup。并且玩拖动这很有用:drag,dragend,dragleave,dragenter,dragover,dragstart ...来自MDN
-
这也很有趣 - 即使
mouseup位于另一个没有冒泡事件的元素上,它仍然会触发clickbody:jsfiddle.net/y0q8rw0g。
标签: javascript html drag-and-drop onclick