0

重複の可能性:
ajax成功コールバック関数内の$(this)にアクセスする方法

私はこのようなコードを持っています:

$('.each_button').click(function(){

$.ajax({ type: 'POST', url: process.php, data: data, success: function(data){

/////
       }
   })
});

$('.each_button')イベントをトリガーしたまさにその場所にアクセスするにはどうすればよいですか?試し$(this)ましたが、別の関数の内部にあるためか、機能しません。

よろしくお願いします。

4

3 に答える 3

5

誰もが何らかの理由で変数を使用したいと考えています。これは必要ありません。

$('.each_button').click(function(){

    $.ajax({
        context: this, // <-- do this instead...
        type: 'POST', 
        url: process.php, 
        data: data, 
        success: function(data) {
               // ...now 'this' is the element you want
            alert(this.className);
        }
    });

});

または、必要$.proxyに応じて使用してください...

$('.each_button').click(function(){

    $.ajax({
        type: 'POST', 
        url: process.php, 
        data: data, 
        success: $.proxy(function(data) {
               // ...now 'this' is the element you want
            alert(this.className);
        }, this) // <-- bind the context
    });

});

これらのアプローチの利点の1つは、関数を再利用できることですsuccess...

function ajax_success(data) {
    alert(this.className);
}

$('.each_button').click(function(){
    $.ajax({
        context: this,
        type: 'POST', 
        url: process.php, 
        data: data, 
        success: ajax_success
    });
});
于 2012-08-09T22:49:45.627 に答える
2

オブジェクトを別の変数に保存して、内でアクセスすることができますfunction(data)

このようなもの:

$('.each_button').click(function(){
    var $obj = $(this);
    $.ajax({
        type: 'POST', 
        url: process.php, 
        data: data, 
        success: function(data) {
            $obj.val(data.foobar);
        }
    })
});
于 2012-08-09T22:30:38.027 に答える
1

ajax呼び出しの前に、これを変数でキャッチします。

$('.each_button').click(function(){

    var $this = $(this);

    $.ajax({ type: 'POST', url: process.php, data: data, success: function(data){

            alert($this);

       }
   })
});
于 2012-08-09T22:29:54.420 に答える