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指しているようです。spanobj

変数を作成してプロパティを取得することでこの問題を解決できることはわかっていますがthis.id

代わりに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 に答える