Well, don't confuse jQuery Object with DOM node/element.
this
should be as simple as
$(this)[0] === this
and
$("#target")[0] === document.getElementById("target");
e.g.
// Setting the inner HTML with jQuery.
var target = document.getElementById("target");
// Comparing DOM elements.
alert($(target)[0] === target); // alerts "true"
// Comparing DOM element and jQuery element
alert($(target)[0] === $(target).eq(0)); // alerts "false"
We must keep in mind that both $(target)[0]
and $(target).get(0)
return the same DOM element which has DOM properties like .innerHTML
and methods like .appendChild()
, but not jQuery methods like
.html()
or .after()
whereas $(target).eq(0)
returns a jQuery
object which has useful methods like .html()
and .after()
.
what's more
var logo1 = $("#logo");
var logo1Elem = logo1.get(0);
var logo2 = $("#logo");
var logo2Elem = $("#logo")[0];
Although logo1
and logo2
are created in the same way (and wrap the same DOM element), they are not the same object.
// Comparing jQuery objects.
alert($("#logo") === $("#logo")); // alerts "false"
// Comparing DOM elements.
alert(logo1Elem === logo2Elem); // alerts "true"
Ref: https://learn.jquery.com/using-jquery-core/jquery-object/