我相信有人已经遇到过这样的问题,但不幸的是我找不到答案。
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>
1)单击红色div 2)不要释放鼠标按钮并将其拖到外面
如您所见,body click函数会触发。这正是我想要禁用的。我想检测用户是否在div内单击,如果然后拖到了外部,则不应发生任何事情!
event.stopImmediatePropagation()
可以解决这个问题。 - somethingheremouseup
在另一个不冒泡事件的元素上,它仍然会在body
上触发click
: http://jsfiddle.net/y0q8rw0g/. - Shikkediel