[英]IE generates spurious mouse click event for absolute-positioned div when dragging child element
在下面的jsFiddle中,单击链接“单击以显示菜单”以显示带有jScrollPane的绝对位置的div。 开始拖动滚动条的拇指,但是允许鼠标在滚动条的右侧稍稍漂移,然后释放鼠标。 在IE(版本8、9、10)中,文档上会生成一个click事件,这会触发我们的代码隐藏菜单。 在我测试过的所有其他浏览器(Firefox,Chrome,Safari)中,不会在文档上生成此类单击事件,并且菜单仍会显示(根据需要)。
在我们的Web应用程序中,我们希望菜单外的点击(即到达文档的那些点击)隐藏菜单。 但是,我们不希望菜单隐藏为从滚动窗格自身内部发起的拖动的副作用。
有没有简单的解决方法来避免此问题? 可以通过某种方式更新jScrollPane以避免该问题吗?
$(document).ready(function () {
$('.scroll-pane').jScrollPane();
$('#menu').click(function () {
console.info('menu clicked');
var api = $('.scroll-pane').show().data('jsp');
api.reinitialise();
return false;
});
$(document).click(function () {
console.info('document clicked');
$('.scroll-pane').hide();
});
$('.scroll-pane').bind('mousedown', function (ev) {
console.info('scroll pane mousedown');
}).bind('mouseup', function (ev) {
console.info('scroll pane mouseup');
}).bind('click', function (ev) {
console.info('scroll pane click');
return false;
});
});
我以前也遇到过类似的click
事件不一致问题。 事实证明,IE会为mouseup
期间鼠标悬停的任何元素触发click
事件,而不是第一次单击mousedown
时发生的元素触发click
事件。
https://stackoverflow.com/a/4606960/17803
换句话说-如果您在元素A上方单击时将鼠标移至元素B,然后释放,则在IE中,您将获得:
mousedown
mouseup
click
B
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.