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 });
  • 相关阅读:
    SDRAM(3):刷新和仲裁
    SDRAM(2):初始化
    SDRAM(1):基本介绍
    计数器(3):避免多计少计
    协议——SPI
    matlab数字图像处理 入门基础
    gVim编辑器——基本设置、常用命令、代码片段
    Pomelo的Router
    Pomelo聊天室框架
    Pomelo术语解释
  • 原文地址:https://www.cnblogs.com/zhangnan15/p/12324591.html
Copyright © 2011-2022 走看看