Mark
Mark

Reputation: 33571

The $ dollar sign

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)?


Edit

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

Answers (9)

Zachary K
Zachary K

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

Ben Crouse
Ben Crouse

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

RichieHindle
RichieHindle

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

mkoryak
mkoryak

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

thedz
thedz

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

vh.
vh.

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

Grant Heaslip
Grant Heaslip

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

easement
easement

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

Mara Morton
Mara Morton

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

Related Questions