【问题标题】:javascript scroll event inconsistencyjavascript滚动事件不一致
【发布时间】:2016-02-10 19:25:47
【问题描述】:

我试图触发滚动事件。 并发现这个简单的任务并没有那么简单。

使用 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/

【问题讨论】:

  • win.trigger("scroll"); 为我写日志行...
  • 触发事件处理程序的正确方法是.trigger("scroll"),而不是更改属性。
  • 你所有的例子都对我有用——我在这个页面的控制台上运行它们。您是否有可能忘记在页面中加载 jQuery?
  • 不,事实证明我的测试没有完全隔离..抱歉

标签: javascript jquery events scroll


【解决方案1】:

看起来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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2011-09-17
    • 2011-03-25
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多