This works for running the same code on both ready and resize:
$(document).ready(function() {
$(window).resize(function() {
// Stuff in here h
on
can be used to wire up the resize and ready events just like any other event.
So for your case, you could create a function that has the code you want to happen for resize
and ready
, and then pass it to both calls to on
.
If you want to keep your enclosing scope clean, you could do all this in an immediately executing function:
(function() {
function stuffForResizeAndReady(){
// Stuff in here happens on ready and resize.
}
$(window).on("resize", stuffForResizeAndReady);
$(document).on("ready", stuffForResizeAndReady);
})();
2012-07-25: There are 2 differences to be aware of when using .on()
to attach ready handlers:
Ready handlers added via $(fn)
and $(document).ready(fn)
are "retro-fired" while ones added by .on()
are not. Using those, if you add a handler after the DOM is already loaded, the fn will be fired immediately. If you add a handler via .on('ready', fn)
after the DOM is loaded, it will not be fired by jQuery, but you can manually .trigger('ready')
it.
When you use $(fn)
or $(document).ready(fn)
to add a ready handler, the fn receives jQuery as its 1st arg, allowing the familar jQuery(function($){ })
usage. If you use $(document).on('ready', fn)
, the 1st arg that the fn receives is an event object. In both cases this
inside the fn is the document
. If you were to do something abnormal like $('#foo').on('ready', fn)
for the purpose of triggering, this
would be the #foo
element.