Reputation: 33571
I have something simple like this:
$(selector).append("somestuff");
But since I'm going to reuse the selector I cache it with:
var $selector = $(selector);
So I end up with:
$selector.append("somestuff");
My question is, should I be doing that, or should I be doing:
var selector = $(selector);
selector.append("somestuff");
Trying either one, both works. Which method is correct, and why? Is the $
in $selector
unnecessary because the jquery object has already been declared in $(selector)
?
Thanks for the answers. It seems very simple and quite clear. Still, there seems to be disagreement over whether or not I should use $
in the variable. It would be nice for everyone to vote up an answer. :)
Upvotes: 41
Views: 29603
Reputation: 3335
In this case, $selector
is an example of Hungarian notation. It is there so that you know that $selector
is a jQuery object.
If you make it your custom to always have jQuery objects start with $
if you suddenly use one wrong it will look wrong which will help you find a problem in your code.
The language couldn't care less. They could have just as well named the jQuery function J
or anything else; the $
is not a special symbol.
Upvotes: 3
Reputation: 8348
The cash sign is just an alias for the jQuery function. Starting the variable name with $ has no effect on that variable.
It is customary though, especially in jQuery plugin development, to use variables already wrapped in jQuery with a cash sign, so you know you can call jQuery methods, without having to wrap them.
Upvotes: 21
Reputation: 281495
$
is just a name - names in JavaScript can contain dollar signs, and can consist of just a dollar sign.
Whether you use a dollar sign in your name isn't relevant to jQuery - there's nothing special about the dollar sign, except that jQuery defines a function called $
.
Upvotes: 49
Reputation: 57948
I like to prefix all my jQuery object names with $
so that I know it's actually a jQuery object, not a DOM reference.
It's a good naming convention.
Upvotes: 9
Reputation: 5572
RichieHindle is correct. To expand:
Javascript variables allow the '$' character. So for example, you could have the following:
var $i = 1;
var i = 1;
Both i and $i have the same value, and both are perfectly legitimate variable names.
jQuery assigns itself (the jQuery object) to '$' because traditionally, that's what Javascript frameworks have done for selectors. There's no inherent meaning to '$' beyond what jQuery gives it.
Upvotes: 12
Reputation: 147
"$" is a function in jQuery. So when you call $(selector), you're actually calling the function $
with selector
as the argument.
Generally, don't use the "$" as part of a variable name for javascript. You will only confuse yourself.
Upvotes: -2
Reputation: 967
I don't believe that you need to add the jQuery selector to jQuery objects (since it's already a part of the object). We don't add the selector and haven't run into any problems.
Upvotes: -1
Reputation: 6139
Yeah.
jQuery always returns a jQuery object. It's what allows chaining.
You've already defined the variable so you get a jQuery object back so $ is unnecessary
Upvotes: 2
Reputation: 4460
I've seen it done both ways. All you are doing is creating a variable with the name '$selector', so they are functionally equivalent. The nice thing about it is that it does make them easy to pick out as jQuery objects.
Upvotes: 33