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