将函数绑定到窗口调整大小和窗口滚动,但也立即调用它

时间:2012-01-19 20:02:21

标签: javascript jquery browser

因此,在网页上,只要重新调整大小或滚动浏览器窗口,就必须重新定位一些组件。

$( window ).on( 'resize scroll', reposition );

其中reposition是执行此操作的函数。

但是,必须立即调用该函数。 (通过立即,我的意思是页面初始化 - 在DOM-ready内部。)需要这样做来设置组件的初始位置。

我目前正在这样做:

$( window ).on( 'resize scroll', reposition );
reposition();

我注意到这也有效:

$( window ).on( 'resize scroll load', reposition );

我相信这是可靠的 - loadDOMContentLoaded事件之前永远不会被触发。

但是这会延迟执行,直到所有页面资源都被加载(这可能需要几秒钟,具体取决于页面上有多少图像)。有没有办法告诉jQuery也应该立即调用绑定函数?

像:

$( window ).on( 'resize scroll now', reposition );

$( window ).on( 'resize scroll ()', reposition );

这些示例当然无效,但我想知道jQuery的on方法是否具有此类功能。我想,我可以手动将此功能实现到on,但我想首先检查它是否已经存在......

1 个答案:

答案 0 :(得分:7)

您可以这样做:

$(window).on('resize scroll', reposition).trigger('scroll');

设置并触发事件回调。

虽然你应该在$(document).ready中设置它,但为了安全起见。基本上你的代码应该是这样的:

$(document).ready(function() {
    $(window).on('resize scroll', reposition).trigger('scroll');
});

因此,您可以保证DOM可以随时使用