This question already has an answer here:
I'm implementing a class-like structure in jQuery, but I'm having some trouble when I try to call some of my functions.
This is how the structure is setup:
MyClass = function(name) {
this.init(name);
}
$.extend(MyClass.prototype, {
init: function(theName) {
this.myFunction(); // works
$('.myclass').each(function(){
this.myFunction(); // doesn't work
});
},
myFunction = function(){}
});
The problem I'm having is that when I try to call one of my functions (e.g., myFunction()
) from inside a jQuery block (like the each()
construct above), I get the error "myFunction() is not a function
."
I think this has something to do with the this
keyword changing its meaning inside the jQuery block, but I'm not sure. Any help would be appreciated!
Try that. :)
The
.each()
function changes the context ofthis
(as does any function in JavaScript).You need to do something like this:
You need to assign
this
to another variable, because of how scope works.