2014-10-31 61 views
1

我有一个jQuery代码,我已经在下面指出。这些代码运行时,当我开始滚动(我的意思是当滚动的高度超过100)如何通过滚动一次来运行jQuery代码

但我想运行一次,立即后100的高度,而不是运行多次。

$(window).scroll(function(){ 
if ($(window).scrollTop() > 100){ 
    //some codes... 
} 
}); 

我该怎么做?谢谢:)

回答

2

只要你的条件得到满足,解除绑定的滚动处理程序:

$(window).scroll(function(){ 
    if ($(window).scrollTop() > 100){ 
     //Kill the handler 
     $(window).off("scroll"); 

     //some codes... 
    } 
}); 
0

使用
$(window).unbind('scroll'); 当你进入第一次

$(window).scroll(function(){ 

    if ($(window).scrollTop() > 100){ 
     $(window).unbind('scroll'); 
    //some codes... 

    } 
}); 
0

绑定滚动事件$(window),然后当scrollTop() > 100,执行您的操作,然后解除滚动事件从$(window)

$(document).ready(function() { 
 
    $(window).bind('scroll', function() { 
 
     if ($(this).scrollTop() > 100) { 
 
     $('body').prepend('Scroll top > 100'); 
 
     $(window).unbind('scroll'); 
 
     } 
 
    }); 
 
});
body { min-height: 1000px }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

http://codepen.io/pen/

0

确定这可以通过全局变量或标志的帮助下做是为了看看效果首先把大量的数据到页面,让您可以看到垂直滚动。

<script> 
var flag = 0; 
    $(document).ready(function() { 
     $(window).scroll(function() { 
      if (flag == 0) { 
       if ($(window).scrollTop() > 100) { 
        alert('1st time'); 
        flag = 1; 
       } 
      } else if (flag == 1) { 
       alert('second time and u can comment this alert'); 
      } 
     }); 
    }); 
</script> 
0

的.off()函数将在第一时间之后发射停止功能。

$(document).ready(function() { 
    $(window).on('scroll.myEvent', function() { 
     if ($(document.body.scrollTop > 100)) 
     { 
      $(window).off('scroll.myEvent'); 
     alert('fired'); 
     } 

     }); 
}); 

Example: http://jsfiddle.net/2k3s9jx8/