Difference between $(this) and this in jquery

JqueryThis

Jquery Problem Overview


What is the fundamental difference between using $(this) vs this

$('.viewComments').click(function(ev){
    //returns the desired value
    alert(this.getAttribute('id'));

    //Gives an error sayin function is not defined 
    alert($(this).getAttribute('id'));

    //returns the desired value
    alert($(this).attr('id'));
});

What I thought was "$(this)" will contain all functions that "this" has and more..But that doesn't seem to be the case.

So what exactly is $(this)? and

Hw do I know what functions are available when I'm using it? (I know I can get them through firebug. but I would like to know if there any some other way- some doc may be)

Jquery Solutions


Solution 1 - Jquery

this is the DOM object, whereas $(this) is the jQuery wrapper around same.

When using this, you can call DOM methods on it, but not jQuery methods. When using $(this), you can call jQuery methods on it, but not DOM methods.

Solution 2 - Jquery

$(this) - represent current DOM element on which event this function is called

The this keyword - In JavaScript this always refers to the “owner” of the function we're executing, or rather, to the object that a function is a method of.

Solution 3 - Jquery

In jQuery, this refers to the DOM object, and $(this) refers to the same object but with jQuery methods added

you can't call this.each() because each is not a DOM method, its a jquery method

you can call $(this).each() because $(this) returns a jquery object

Solution 4 - Jquery

$(this) is the current object that was selected using a jQuery selector or event attached to the object.

so if you have $('#myelement').click(..... then $(this) referes to the element that was clicked on so that $(this).hide() hides that element.

Solution 5 - Jquery

Here are two articles that you may find helpful:

What is this? by Mike Alsup

jQuery's this: demystified by Remy Sharp

Solution 6 - Jquery

in jQuery the $() notation is a shorthand for the jQuery selector, so if you say $(this) you are asking jQuery to re-select your object. Then you have the usual jQuery functions available.
Then, this is the object selected by the outer jQuery call (JavaScript).

Solution 7 - Jquery

$(this) is a jQuery object and you can use the power and beauty of jQuery, but with 'this' keyword, one need to use native JavaScript.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSheldon FernandesView Question on Stackoverflow
Solution 1 - JqueryChris Jester-YoungView Answer on Stackoverflow
Solution 2 - JqueryPranay RanaView Answer on Stackoverflow
Solution 3 - JqueryeachView Answer on Stackoverflow
Solution 4 - JquerygriegsView Answer on Stackoverflow
Solution 5 - JqueryAlek DavisView Answer on Stackoverflow
Solution 6 - JqueryMarcoView Answer on Stackoverflow
Solution 7 - JqueryJithi VasudevView Answer on Stackoverflow