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

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

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

例如:

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

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

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

只是绑定在绑定中,如:

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

但是附加到滚动事件是非常糟糕的主意

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

像这样:

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

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

 $(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 });