jQuery,jscrollpane - 防止窗口在到达div结尾时滚动

时间:2011-08-10 11:53:53

标签: javascript jquery css jscrollpane

如果我到达了jscrollpane div的顶部或底部,我试图阻止浏览器窗口滚动。 Tinyscrollbar就是这么做的。

使用jscrollpane我可以使用类似的东西检测div滚动:

var jsp = $(".scroll-pane").data('jsp'); // getting hold of the api
jsp = $("#" + e.attr('id') + " > .feed-items").bind(
    'jsp-scroll-y', function(e, scrollPositionY, isAtTop, isAtBottom) {
        // reached bottom
        if (jsp.getPercentScrolledY() == 1) {
        } else {
            // ...
        }
    })

我尝试使用e.preventDefault()但它没有用。我在魔术盒中尝试了一切,从返回假到停止传播。什么都行不通。有这个不错的黑客:

$("body").css("overflow", "hidden")
         .css('margin-left', "-" + __scrollbarWidth + "px");

但我不想使用它,因为它并不完美。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

  • 您必须将例如测试类添加到div
  • 添加一些javascript:

     $(document).on('mousewheel', '.test',
          function (e) {
          var delta = e.originalEvent.wheelDelta;
          this.scrollTop += (delta < 0 ? 1 : -1) * 30;
          e.preventDefault();
     });
    

用于垂直滚动。如果你想对水平滚动做同样的事情,请告诉我

答案 1 :(得分:2)

我不知道它的工作原理,但是当你在鼠标滚轮上到达底部或顶部时它会停止滚动;)

/* Stop scrolling */
$('#cnct_form').bind('jsp-scroll-y',function(event, isScrollable)   {
      console.log('asd');
}).jScrollPane();

$('#cnct_form').mousewheel(function(event) {
    event.preventDefault();
});