jQuery中的Javascript'this'指针

时间:2012-07-08 02:40:23

标签: javascript pointers this

我创建了一个对象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

2 个答案:

答案 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));
};