使用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和就绪事件,就像任何其他事件一样。

因此,对于您的情况,您可以创建一个函数,其中包含您希望resizeready ,然后将其传递给两个调用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#foothis将是#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 }); 

更简单 – 希望这会有所帮助。