$(window).load OR $(window).scroll在同一个函数中?

时间:2011-01-27 15:17:28

标签: javascript jquery javascript-events

我在网站上实现了stickyfloat(http://plugins.jquery.com/files/stickyfloat_0.htm)。它适用于一个问题。该功能会在$(window).scroll上触发,而不会在$(window).load上触发。我希望它能触发,因为我链接到页面中的锚点(http://tre-stage.wdogsystems.com:8000/faq/#does-the-sale-of-my-receivables-have-a - 我的信用报告上的负效应)我想在页面加载时显示侧边菜单,而不仅仅是当我启动滚动时。

如果您查看上面的页面,它就像我想要的那样工作。但是,这只是因为我用$(window).load重复了相同的功能。这对我来说似乎非常低效。那么,有没有办法将两者联系在一起?

例如:

$(window).scroll || $(window).load (function () ...

4 个答案:

答案 0 :(得分:2)

jQuery的.bind() help 方法允许一次绑定多个事件。

$(window).bind('scroll load', function() {
    // code here triggers for both, scroll & load events
});

答案 1 :(得分:2)

只需绑定绑定,如:

$(window).bind("scroll load", ...)

然而,附加滚动事件

是非常糟糕的主意

一个非常好的解释为什么和一个很好的解决方案:http://ejohn.org/blog/learning-from-twitter/

答案 2 :(得分:1)

像这样:

$(document).bind('ready load scroll', function() { ... });

答案 3 :(得分:0)

为什么不在加载时触发窗口滚动事件?你也可以命名你的滚动事件以隔离它,以后可以更好地访问它......

$(window)
   .on('scroll.myscroll', function () {
      // do something on scroll event
   })
   .trigger('scroll.myscroll'); // trigger scroll event on pageload

但是如果你真的想在窗口加载时运行它(确保DOM完全加载包括图像等),那么提到的其他示例都很好。但是使用.on()方法,而不是.bind()。

$(window).on('scroll.myscroll load.myload', function () {
   // do something on scroll and load events
});