3

我创建了一个对象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.idbut的属性来解决这个问题

有没有办法让this鼠标悬停功能指向obj呢?

4

2 回答 2

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));
};
于 2012-07-08T02:41:54.957 回答
1

替代使用$.proxy

a.prototype.b = function(){
    $(this.id+" span").mouseover($.proxy(function(){
        $(this.id).addClass("c");
    }, this));
};
于 2012-07-08T02:44:06.727 回答