i have an own js-class and try to use jquery's $(this) and object-this in an click-event.
jquery's $(this) works fine, but the object-this is not defined.
http://jsfiddle.net/j33Fx/2/
var myclass = function(){
this.myfunction = function(){
alert('myfunction');
}
this.buttonclicked = function(){
alert('buttonclicked');
}
this.writeout = function(){
var buttoncode = '<button class="mybutton">click</button>';
$('body').append(buttoncode);
$('.mybutton').click(function(){
alert('Button: '+$(this).attr('class'));
this.buttonclicked();
});
this.myfunction();
}
}
var x = new myclass();
x.writeout();
When i click the appended button, i get an alert with the classname of the Button, but my function "this.buttonclicked" seems not to be a function.
Any ideas?
this
refers to element which invoked the event in the event handler. You can cache current object in some other variable. Which can be used latter.
use
this.writeout = function(){
var buttoncode = '<button class="mybutton">click</button>';
$('body').append(buttoncode);
var _self = this; //cache current object
$('.mybutton').click(function(){
alert('Button: '+ $(this).attr('class')); //Here this refers to element which invoked the event.
_self.buttonclicked(); //Use cached object
});
this.myfunction();
}
Updated Fiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With