user169867
user169867

Reputation: 5870

Is there a difference between $().ready() and $(document).ready()

I've seen some code where they just do this:

$().ready(function()
{
    ...
});

This is shorter than doing a document selector but is it the same thing?

Upvotes: 29

Views: 4615

Answers (3)

Nick Craver
Nick Craver

Reputation: 630379

Slight change:

$(document).ready(function() {});

Is equal to:

$(function() {});

As of jQuery 1.4: $().ready(function() { }); no longer works correctly in all cases. From the release notes:

As of jQuery 1.4, if you pass no arguments in to the jQuery() method, an empty jQuery set will be returned. In previous versions of jQuery, a set containing the document node would be returned.

Upvotes: 34

nickf
nickf

Reputation: 546015

Nick and Justin have got the right answers here, but since we're on the topic, I would recommend for portability to never use $ in the global scope. A few too many libraries use it for their own purposes, and you could run into compatibility problems if you need to mix them up. Instead, you can use the optional first parameter to the jQuery ready handler:

jQuery(function($) {

});

This sets $ to be a reference to jQuery in that function scope.

Upvotes: 8

Justin Ethier
Justin Ethier

Reputation: 134167

According to the jQuery API docs, all three of the following syntaxes are equivalent:

  • $(document).ready(handler)
  • $().ready(handler) (but this is not recommended)
  • $(handler)

So apparently that syntax will work, but is not the recommended syntax.

According to the jQuery 1.4 Release Notes:

In jQuery 1.3, jQuery() returned a jQuery set containing just the document. in jQuery 1.4, it returns an empty jQuery set. This can be useful for creating an empty set and adding elements to it dynamically. Note: The jQuery().ready() technique still works in 1.4 but it has been deprecated. Please use either jQuery(document).ready() or jQuery(function(){}).

Upvotes: 7

Related Questions