使用jQuery .on()绑定准备并同时resize
这适用于在ready和resize上运行相同的代码:
$(document).ready(function() { $(window).resize(function() { // Stuff in here happens on ready and resize. }).resize(); // Trigger resize handlers. });//ready
你会如何使用jQuery.on()完成相同的结果?
on
可用于连接resize和就绪事件,就像任何其他事件一样。
因此,对于您的情况,您可以创建一个函数,其中包含您希望resize
和ready
,然后将其传递给两个调用on
。
如果要保持封闭范围的清洁,可以在立即执行的函数中完成所有这些操作:
(function() { function stuffForResizeAndReady(){ // Stuff in here happens on ready and resize. } $(window).on("resize", stuffForResizeAndReady); $(document).on("ready", stuffForResizeAndReady); })();
2012-07-25 :使用.on()
附加就绪处理程序时,需要注意两个不同之处:
-
通过
$(fn)
和$(document).ready(fn)
添加的就绪处理程序是“复古”,而由.on()
添加的就绪处理程序则不是。 使用这些,如果在DOM已经加载后添加处理程序,将立即触发fn。 如果你在加载DOM 之后通过.on('ready', fn)
添加一个处理程序,它将不会被jQuery触发,但你可以手动.trigger('ready')
它。 -
当你使用
$(fn)
或$(document).ready(fn)
添加一个就绪处理程序时,fn接收jQuery作为它的第一个arg,允许使用熟悉的jQuery(function($){ })
。 如果你使用$(document).on('ready', fn)
,fn接收的第一个arg是一个事件对象 。 在这两种情况下,fn中的内容都是document
。 如果你为了触发而做了像$('#foo').on('ready', fn)
this
的#foo
,this
将是#foo
元素。
.ready()
.mouseover()
和其他像.mouseover()
都只是使用.bind()
函数(或jQuery 1.7+中的.on()
。 .resize(function () {})
映射到.bind('resize', function () {})
。 以下是您的代码在任何可能的情况下使用.on()
方式:
$(document).on('ready', function() { $(window).on('resize', function() { // Stuff in here happens on ready and resize. }).trigger('resize'); // Trigger resize handlers. });//ready
这是一个演示: http : //jsfiddle.net/qMBtP/
将它绑定到load和resize事件,如下所示:
$(window).on('load resize', function () { // your code });
更简单 – 希望这会有所帮助。