jscrollpane блок прокрутка родительский - PullRequest
6 голосов
/ 06 мая 2010

Могу ли я сделать jscrollpne таким, чтобы родительская панель не прокручивалась, даже когда дочерняя прокрутка достигла своего дна. Теперь, когда дочерняя прокрутка достигает дна, происходит прокрутка родительского элемента. Я хочу, чтобы родительский элемент прокручивался, только когда мышь находится вне дочерней области прокрутки.

Ответы [ 4 ]

5 голосов
/ 18 марта 2011

Поведение, которое вы описываете, является умышленным. Вот как собственные полосы прокрутки браузера ведут себя на элементе с переполнением: auto. Я бы не рекомендовал менять его. Однако, если вы хотите, чтобы ответ Боргенка был правильным, вы можете использовать этот код:

$('.scroll-pane')
    .jScrollPane()
    .bind(
        'mousewheel',
        function(e)
        {
            e.preventDefault();
        }
    );

См. Пример здесь (вам может понадобиться уменьшить окно, чтобы родитель мог прокрутить): http://jsfiddle.net/VYcDZ/51/

4 голосов
/ 18 марта 2011

Вы можете использовать event.preventDefault ()

$('.selector').mousewheel(function(event) {
    event.preventDefault();
});
1 голос
/ 03 июня 2013

Приведенные выше ответы не сработали для меня.Если вам удобно редактировать исходный код плагина, вы можете предоставить соответствующие внутренние методы общедоступному API:

// Public API
$.extend(
  jsp,
    {

      ...

      initMousewheel : function(){
        initMousewheel();
      },
      removeMousewheel : function(){
        removeMousewheel();
      }

    }
  );

Теперь вы можете условно и прагматично отключить / прокрутить любую jscrollpane:

api = $('#full-page-container').data('jsp');
api.removeMousewheel(); // disable
api.initMousewheel(); // enable
1 голос
/ 24 декабря 2011

Столкнулся с этой проблемой сегодня вечером ... увидел, что ни у кого не было ответа, поэтому я написал его

var blockScrollTarget;    
$('.jscroll').mousewheel(blockScroll);
        ......
    function blockScroll(e) {
        blockScrollTarget = blockScrollTarget || $(e.currentTarget);
        var d = blockScrollTarget.data('jsp');
        if(d.getPercentScrolledY() == 1 || d.getPercentScrolledY() == 0) {
          return true;
        }
        if(d.getIsScrollableV()) {
          e.preventDefault();
        }
      }
...