I am creating a mini-library, sort of trying to reconstruct, at least partly, the way jQuery
works for learning purposes and to understand better how object-oriented programming works.
I have recreated the jQuery
methods click
and addClass
, but when I call them like:
$(".class1").click(function() {
$(".class1").addClass("class2"); // Works, but it adds class2 to all elements
this.addClass("class2"); // Doesn't work
});
I get an Uncaught Error
saying this.addClass
is not a function, which is normal, since I shouldn't be able to access another object's methods.
How is $(this)
made in jQuery to mean the DOM element that triggered an event, so that in my case I can use it to add class2
only to the element clicked and not all elements that have the class class1
?
P.S: I tried reading the jQuery file, but I feel like these waters are currently too deep for me.
Edit:
I always appreciate all the answers and the help I get on Stack Overflow, but telling me to use
$(this)
instead ofthis
doesn't solve my issue, because$(this)
doesn't exist in my code. I'm trying to learn how to create something like jQuery's$(this)
& what's the logic behind it.The
click
method is defined as follows:
$.prototype.click = function(callback) {
for (var i = 0; i < this.length; i++) {
this[i].onclick = function(event) {
callback.call(this, event);
}
}
};