jQuery窗口调整大小 - 启动和停止事件?

时间:2014-03-13 10:05:46

标签: jquery resize window viewport

如果视口大于960px,则#right元素应自动滚动,如果视口大于960px,则应停止。如果我开始使用缩放到960px以上的小视口,它就已经可以了。如果我将其缩放回小于960px,它仍然会滚动。任何人都可以帮我吗?

function checkWidth() {
    var windowSize = $(window).width();

    if (windowSize < 960) {
      $(window).scroll(function() {    
        var space = $(window).scrollTop();   
        return 0;    
      }); 
    }
    else {
      $(window).scroll(function() {    
        var space = $(window).scrollTop();   
        return $('#right').animate({top: space}, {queue: false});    
      }); 
    }
}

// Execute on load
checkWidth();
// Bind event listener
$(window).resize(checkWidth);

2 个答案:

答案 0 :(得分:1)

我认为你需要这个:jQuery.stop()以防小窗口:

if (windowSize < 960) {
  $(window).scroll(function() {    
    var space = $(window).scrollTop();   
    return $('#right').stop();    
  }); 
}

答案 1 :(得分:0)

您正在每个调整大小上绑定新的滚动事件。作为一个简单的修复,unbind事件:

function checkWidth() {
    var windowSize = $(window).width();

    if (windowSize < 960) {
      $(window).off('scroll').scroll(function() {    
        var space = $(window).scrollTop(); // don't know what you are expecting here???   
        return 0;    
      }); 
    }
    else {
      $(window).off('scroll').scroll(function() {    
        var space = $(window).scrollTop();   
        $('#right').animate({top: space}, {queue: false});    
      }); 
    }

}

顺便说一句,你也可以像@ Michal的回答一样使用.stop()