[英]javascript scroll event inconsistency
我试图触发滚动事件。 并发现这个简单的任务不是那么简单。
使用jQuery v1.9.1 代码
var win = $(window);
win.on("scroll", function(){
console.log("running");
});
// trigger the scroll event
win.trigger("scroll"); //no success
// change the scrollTop to +1
win.scrollTop(win.scrollTop()+1) //no success
// change the scrollTop to -1
win.scrollTop(win.scrollTop()-1) //no success
// change the scrollTop to +2
win.scrollTop(win.scrollTop()+2) //fires twice
// change the scrollTop to +1.7
win.scrollTop(win.scrollTop()+1.7) //fires twice
是否存在触发滚动事件的正确可靠方法? 参见jsFiddle https://jsfiddle.net/u9dygoxf/1/
看起来scroll
事件实际上仅在您手动触发scroll
事件或scrollTop()
函数实际滚动窗口时才触发。
这总是会警告一个值,尽管有时它是零:
var win = $(window);
win.on('scroll', function() {
alert('scrolled: ' + win.scrollTop());
});
win.trigger('scroll');
只要页面尚未一直滚动到底部,这就会发出警报。
var win = $(window);
win.on('scroll', function() {
alert('scrolled: ' + win.scrollTop());
});
win.scrollTop(win.scrollTop() + 1);
只要页面尚未一直滚动到顶部,这就会发出警报。
var win = $(window);
win.on('scroll', function() {
alert('scrolled: ' + win.scrollTop());
});
win.scrollTop(win.scrollTop() - 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.