Friday, 5 August 2016

javascript - What's the difference between '$(this)' and 'this'?




I am currently working through this tutorial: Getting Started with jQuery



For the two examples below:



$("#orderedlist").find("li").each(function (i) {
$(this).append(" BAM! " + i);
});
$("#reset").click(function () {
$("form").each(function () {

this.reset();
});
});


Notice in the first example, we use $(this) to append some text inside of each li element. In the second example we use this directly when resetting the form.



$(this) seems to be used a lot more often than this.



My guess is in the first example, $() is converting each li element into a jQuery object which understands the append() function whereas in the second example reset() can be called directly on the form.




Basically we need $() for special jQuery-only functions.



Is this correct?


Answer



Yes you only need $() when you're using jQuery. If you want jQuery's help to do DOM things just keep this in mind.



$(this)[0] === this



Basically every time you get a set of elements back jQuery turns it into a jQuery object. If you know you only have one result, it's going to be in the first element.



$("#myDiv")[0] === document.getElementById("myDiv");


And so on...


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...