我有一个灯箱,我希望后面的网页在div打开时不滚动鼠标滚轮,只有div内容应该保持可滚动状态。 当div消失后,页面可以再次滚动。 但是我被卡住了。
我可以将窗口绑定/取消绑定到鼠标滚轮,但是当窗口不再可滚动时,我无法弄清楚如何保持灯箱可滚动。
我尝试了e.stopPropagation但到目前为止没有成功。 我在这里也尝试了很多其他的例子,但经过一整夜的搜索,我只是放弃了这个。
这是我的代码的结构:
When I scroll with mousewheel
{
if(no lightbox)
{
// Then the mousewheel scroll triggers some stuff
}
else
{
// the lightbox div is open and I then need to
// just keep the background static (no mousewheel scroll)
// and still allow the mousewheel to scroll inside the lightbox div
}
}
这是我的最后一次尝试:
$(window).bind('mousewheel DOMMouseScroll', function(e)
{
if(!lightbox)
{
...
}
else
{
$(window).bind('mousewheel DOMMouseScroll',function(e)
{
e.preventDefault();
e.stopPropagation();
return false;
});
$('.lightbox').bind('mousewheel DOMMouseScroll',function()
{
return true;
});
}
}
这不起作用,因为:
1)灯箱div嵌入窗口内。灯箱似乎获得了窗口的属性,包括鼠标滚轮。
2)我在窗口绑定中有一个窗口绑定,这似乎是不合理的。
3)我不确定"返回false"正在做任何事情
仅供参考,我也尝试了一些有用的东西,但这意味着我模拟了一个卷轴并且有一个滞后和一个阶梯效应。它看起来并不自然,我不想这样做:
$(window).bind('mousewheel DOMMouseScroll', function(e)
{
if(!lightbox)
{
...
}
else
{
e.preventDefault();
e.stopPropagation();
$('.lightbox').bind('mousewheel DOMMouseScroll',function(){
var y = $('.lightbox').scrollTop();
$('.lightbox').scrollTop(y-15);
});
}
}
所以,我不知道还有什么可以尝试,可以使用一些帮助。
我有一个要求(如果你不介意的话):
我应该保持结构不变,并添加任何我必须添加的东西"否则"括号。 原因是鼠标滚轮事件触发了很多东西,项目动态几乎完全围绕着它。因此,将它用作主要触发器是有意义的。
谢谢。