博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
扩展jquery scroll事件,支持 scroll start 和 scroll stop
阅读量:5788 次
发布时间:2019-06-18

本文共 2342 字,大约阅读时间需要 7 分钟。

scroll()方法的扩展

javascript里有一个事件是滚动事件,只要拖动滚动条,就会触发事件。 用jquery的话,这个事件scroll 可以查看jquery api : [http://api.jquery.com/scroll] 但scroll 事件有一个缺陷,就是只能判断滚动条滚动,而不能监控滚动条停止滚动时的事件。 现用jquery扩展一下scroll 事件,新增了监听滚动事件的开始和滚动事件的结束.

/*这个js文件对scroll()方法进行扩展,在JQ中scroll()只可以监听滚动的时候的一个事件.这个js文件可以监听scrollStart和scrollStop*/(function(){     var special = jQuery.event.special,        uid1 = 'D' + (+new Date()),        uid2 = 'D' + (+new Date() + 1);     special.scrollstart = {        setup: function() {             var timer,                handler =  function(evt) {                     var _self = this,                        _args = arguments;                     if (timer) {                        clearTimeout(timer);                    } else {                        evt.type = 'scrollstart';                        jQuery.event.handle.apply(_self, _args);                    }                     timer = setTimeout( function(){                        timer = null;                    }, special.scrollstop.latency);                 };             jQuery(this).bind('scroll', handler).data(uid1, handler);         },        teardown: function(){            jQuery(this).unbind( 'scroll', jQuery(this).data(uid1) );        }    };     special.scrollstop = {        latency: 300,        setup: function() {             var timer,                    handler = function(evt) {                     var _self = this,                        _args = arguments;                     if (timer) {                        clearTimeout(timer);                    }                     timer = setTimeout( function(){                         timer = null;                        evt.type = 'scrollstop';                        jQuery.event.handle.apply(_self, _args);                     }, special.scrollstop.latency);                 };             jQuery(this).bind('scroll', handler).data(uid2, handler);         },        teardown: function() {            jQuery(this).unbind( 'scroll', jQuery(this).data(uid2) );        }    }; })();复制代码

可以将上面代码保存到一个文件,这相当于一个插件。 调用方法如下:

(function(){    jQuery(window).bind('scrollstart', function(){        console.log("start");    });     jQuery(window).bind('scrollstop', function(e){        console.log("end");    }); })(); 复制代码

这样就完成了一个扩展的scroll()方法,可以监听滚动开始和滚动结束了.还是很有实际价值的.

转载于:https://juejin.im/post/5a39da866fb9a0451f31141a

你可能感兴趣的文章
VS2017+EF+Mysql生成实体数据模型(解决闪退的坑)
查看>>
C++多态、继承的简单分析
查看>>
库克称未来苹果用户可自己决定是否降频 网友:你是在搞笑吗?
查看>>
6倍性能差100TB容量,阿里云POLARDB咋实现?
查看>>
Sublime Text 2 技巧
查看>>
使用fscanf()函数从磁盘文件读取格式化数据
查看>>
参加婚礼
查看>>
h5 audio相关手册
查看>>
刚毕业从事java开发需要掌握的技术
查看>>
CSS Custom Properties 自定义属性
查看>>
vim
查看>>
MVVM计算器(下)
查看>>
C++中指针和引用的区别
查看>>
簡單分稀 iptables 記錄 udp 微軟 138 端口
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
H3C-路由策略
查看>>
centos 修改字符界面分辨率
查看>>
LNMP之Mysql主从复制(四)
查看>>
阅读Spring源代码(1)
查看>>