在函数内启用滚动

时间:2015-06-10 14:07:24

标签: javascript jquery css

当我使用scrollWheel时,我将currentSlide加1,当currentSlide === 2时红色div正在上升,我想启用滚动到正文。如您所见,我的绑定函数正在返回false。我尝试在return true currentSlide === 2时设置条件,但显然它不会起作用。

有人可以向我解释如何解决这个问题吗?

var currentSlide = 0;

function scrollDown() {
    console.log('Scroll Down', currentSlide);      

  if(currentSlide < 3) {
    currentSlide += 1;                 
  }

  if(currentSlide === 3) {
    $('#el').addClass('hide');
  }
}

http://jsbin.com/rovicawija/1/edit?js,console,output

3 个答案:

答案 0 :(得分:4)

从技术上讲,当currentSlide等于3而不是2时,你隐藏了元素。

无论如何,你需要做return false;绑定而不是return currentSlide >= 3;,这样当红色div被隐藏时,你现在可以滚动了。

另外,其他人注意到使用on而不是bind,因为已弃用bind。

答案 1 :(得分:3)

我完全不确定你要做什么,因为你的问题和预期结果还不清楚

我将代码编写如下

var currentSlide = 0;

    function scrollDown() {
        console.log('Scroll Down', currentSlide);      

      if(currentSlide < 10) {
        currentSlide += 1;                 
        return false;
      }

      if(currentSlide === 10) {
        $('#el').addClass('hide');
      }
    }


    $(window).on('DOMMouseScroll', function(e) {
            if (e.originalEvent.detail > 0) {
                return scrollDown();
            } 


        })
        .on('mousewheel', function(e) {

            if (e.originalEvent.wheelDelta < 0) {
                return scrollDown();
            }

        });

通过使用on(你应该)并让scrollDown返回一个布尔值假如果不好去,如果没有任何事情可以返回任何内容。

答案 2 :(得分:2)

我只是将return true放在最后一个函数上,一切似乎都正常,请参阅here

$(window).bind('DOMMouseScroll', function(e) {
        if (e.originalEvent.detail > 0) {
            scrollDown();
        }
        return false;
    })
    .bind('mousewheel', function(e) {
        if (e.originalEvent.wheelDelta < 0) {
            scrollDown();
        }
        return true;
    });