在下面的 jsFiddle 中,单击链接“单击以显示菜单”以显示附加了 jScrollPane 的绝对定位 div。开始拖动滚动条拇指,但让鼠标在滚动条右侧稍稍移动,然后松开鼠标。在 IE(版本 8、9、10)中,会在文档上生成一个点击事件,这会触发我们的代码隐藏菜单。在我测试过的所有其他浏览器(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;
});
});