Reputation: 9528
So I have this code:
function theObject(){
this.someelement = $("#someelement");
this.someotherelement = $("someotherelement");
this.someelement.fadeOut(500, function(){
this.someotherelement.attr("title", "something");
this.someelement.fadeIn(500);
});
}
for some reason this.someotherelement
is undefined. I'm guessing because it's wrapped in a function(){}
?
Upvotes: 0
Views: 588
Reputation: 306
is someotherelement an ID? If so, you are missing a #...
this.someotherelement = $("#someotherelement");
Upvotes: 0
Reputation: 2393
I have edited your code , I hope it helps.
function theObject(){
var someelement = $("#someelement");
var someotherelement = $("#someotherelement");
someelement.fadeOut(500, function(){
someotherelement.attr("title", "something");
someelement.fadeIn(500);
});
}
Upvotes: 0
Reputation: 5264
This is caused by a JavaScript scoping issue. Creating a function creates a new scope for this
which makes this
refer to the function. You can fix it by doing ... this:
function theObject(){
this.someelement = $("#someelement");
this.someotherelement = $("someotherelement");
// bind this to that (what?). This way, this will still be accessible inside
// the new function's scope as that
var that = this;
this.someelement.fadeOut(500, function(){
that.someotherelement.attr("title", "something");
that.someelement.fadeIn(500);
});
}
Upvotes: 1
Reputation: 1038710
Inside the function this
means something else. You could capture it though:
this.someotherelement = $("someotherelement");
var _this = this;
this.someelement.fadeOut(500, function(){
_this.someotherelement.attr("title", "something");
_this.someelement.fadeIn(500);
});
Upvotes: 3