jQuery:当窗口鼠标滚轮事件未绑定时,如何仍然获得可滚动的div

时间:2017-02-27 11:48:09

标签: jquery bind mousewheel

我有一个灯箱,我希望后面的网页在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);
     });
   }
}

所以,我不知道还有什么可以尝试,可以使用一些帮助。

我有一个要求(如果你不介意的话):

我应该保持结构不变,并添加任何我必须添加的东西"否则"括号。 原因是鼠标滚轮事件触发了很多东西,项目动态几乎完全围绕着它。因此,将它用作主要触发器是有意义的。

谢谢。

0 个答案:

没有答案