2

私はjavascriptで次のクラスを持っています:

function User(aJid){
    this.jid = aJid;
    this.name = '';
    this.uni = '';
    this.edad = '';
    this.foto = '';
    this.avatar = '';
    this.initialize2 = function(){

        $('#edit_vcards').on('click', '#enviar_vcard', function(){
            //alert("enviando...");
            console.log(this);
        });
    };

ご覧のとおり、関数を DOM のいくつかの要素にバインドする "initialize2" メソッドがあります。そこでconsole.log(this)、メソッドを実行しているオブジェクトではなく、メソッドをバインドした DOM 要素を出力するa を実行しinitialize2ます。その関数からそのオブジェクトにアクセスするにはどうすればよいですか? バインドされた関数のスコープがオブジェクトではなく DOM 全体である場合と同様です。とにかく、私がやろうとしていることをするために?

4

4 に答える 4

10
function User(aJid){
    this.jid = aJid;
    this.name = '';
    this.uni = '';
    this.edad = '';
    this.foto = '';
    this.avatar = '';
    this.initialize2 = function(){
    var that = this;  //store a reference to maintain scope

        $('#edit_vcards').on('click', '#enviar_vcard', function(){
            //alert("enviando...");
            console.log(that);  //use that variable here
        });
    };
于 2012-06-15T15:44:06.873 に答える
2

thisobjを渡してみて、.onevent.data を使用して obj にアクセスできるハンドラ内に渡してみてくださいthis。下記参照、

this.initialize2 = function(){

    $('#edit_vcards').on('click', '#enviar_vcard', {obj_this: this }, function(){
        //alert("enviando...");
        console.log(event.data.obj_this); //should be the obj this
    });
};
于 2012-06-15T15:41:38.943 に答える