zoukankan      html  css  js  c++  java
  • 让$(window).scroll()监听事件只执行一次

    可以用jQuery中的unbind()来进行事件解绑。

    1 $(window).scroll(function() {
    2     console.log("滚离顶部" + $(document).scrollTop());
    3 
    4     //...
    5 
    6     //对window对象进行scroll事件解绑
    7     $(window).unbind("scroll");
    8 });

    方法的参数如下(截图于w3school):

    额外:

    我在一次将scroll()和setInterval()结合起来用时,出现了“貌似unbind()不太奏效”的情况:scroll事件被触发多次。仔细看了看,发现其实不是unbind()的问题,是代码结构的问题,我不该一股脑地连scroll()都放进setInterval()里,导致浏览器不断添加一模一样的监听事件(这是什么机制呢?)——它们居然每50毫秒增多一个(都处于待命状态),然后一并被触发。(所以不是unbind()起不了作用。。也与鼠标滚轮“每滚一小牙,触发事件次数不止一次”这个特点无关)

    错误代码:

    1 var i =setInterval(function(){
    2 
    3     //...
    4 
    5     $(window).scroll(function(){
    6         clearInterval(i);
    7         $(window).unbind("scroll");
    8     });
    9 },50);

    正确代码:

    1 var i =setInterval(function(){
    2 
    3     //...
    4 
    5 },50);
    6 $(window).scroll(function(){
    7     clearInterval(i);
    8     $(window).unbind("scroll");
    9 });
  • 相关阅读:
    Android 基础-2.0 拔打电话号码
    Android 基础-1.0 按钮4种点击事件
    Android Studio 技巧备忘
    Android Studio Mac版快捷键
    face++静态库转为动态库之二
    Podfile语法参考
    iOS 高级去水印,涂鸦去水印
    vector 用法小例子
    UltraCompare 激活
    linux 日志查询
  • 原文地址:https://www.cnblogs.com/zhangnan15/p/12324591.html
Copyright © 2011-2022 走看看