jQuery: 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?
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...
$()
is the jQuery constructor function.
this
is a reference to the DOM element of invocation.
So basically, in $(this)
, you are just passing the this
in $()
as a parameter so that you could call jQuery methods and functions.
是的,您需要$(this)
用于jQuery函数,但是当您想要访问不使用jQuery的基本javascript方法时,您可以使用this
。