我创建了一个对象obj
:
function a(id, ...){
this.id = id;
......
}
var obj = new a("#somediv", ...);
我有这个功能:
a.prototype.b = function(){
$(this.id+" span").mouseover(function(){
$(this.id).addClass("c");
});
};
显然,鼠标悬停功能中的this
指向span
而不是obj
......
我知道我可以通过创建变量并获取this.id
但
有没有办法让鼠标悬停功能中的this
改为obj
?
答案 0 :(得分:5)
在较新的浏览器中使用纯JavaScript,您可以绑定函数:
a.prototype.b = function(){
$(this.id+" span").mouseover(function(){
$(this.id).addClass("c");
}.bind(this));
};
使用jQuery,您可以获得更好的浏览器支持:
a.prototype.b = function(){
$(this.id+" span").mouseover($.proxy(function(){
$(this.id).addClass("c");
}, this));
};
答案 1 :(得分:1)
替代使用$.proxy
:
a.prototype.b = function(){
$(this.id+" span").mouseover($.proxy(function(){
$(this.id).addClass("c");
}, this));
};