我有一个场景,如果我点击div块的任何一边,我隐藏了Div块。
我正在使用Internet Explorer并测试该应用程序。如果没有滚动条我的代码工作正常。如果div块上有一个滚动条,那么当我点击滚动条时,它会认为滚动条不是div的一部分,它会隐藏div块。我试图保持div块打开,即使用户点击滚动条并进行滚动操作。
var $container = $(".toolbarBlock");
$(document).mouseup(function (e) {
if (!$container.is(e.target) // if the target of the click isn't the container...
&& $container.has(e.target).length === 0) // ... nor a descendant of the container
{
toolbarClose();
}
});
function toolbarClose() {
return $.when(slideOut($container));
}
答案 0 :(得分:25)
我想发布回答,以便对遇到同样问题的其他人有所帮助。
我用过:
e.target != $('html').get(0) // nor the scrollbar
var $container = $(".toolbarBlock");
$(document).mouseup(function (e) {
if (!$container.is(e.target) // if the target of the click isn't the container...
&& ($container.has(e.target).length === 0) // ... nor a descendant of the container
&& (e.target != $('html').get(0))) // nor the scrollbar
{
toolbarClose();
}
});
function toolbarClose() {
return $.when(slideOut($container));
}
答案 1 :(得分:2)
jQuery中没有滚动条的点击事件。 http://forum.jquery.com/topic/click-event-for-scrollbar
但是有一个.scroll() http://api.jquery.com/scroll/
您可以收听滚动事件并显示容器。
因此,只要他们单击该元素就会隐藏该元素,但是当它们滚动时,您可以再次显示该元素。
不理想,但我的研究是唯一的选择。