1

投稿内の関数内で $(this) にアクセスするのに苦労しています。応答に応じてオブジェクトクラスを削除するだけです。

  $.post("url.php?"+theData, {}, function(response){  etc.....

静的な #ID でも問題なく動作しますが、$this を操作することをお勧めします

4

3 に答える 3

4

試す

var self = this; 
$.post("url.php?"+theData, {}, function(response){
    $(self).show(); // manipulate this
});
于 2012-07-28T15:13:54.957 に答える
1

これは非同期イベントからのコールバックであるためthis、要素を指す は失われます。

外側 this(要素)への参照を保持する必要があります。1 つの方法は、すぐに実行される関数を介してバインドすることです。

$('#something').on('click', function() {
    $.post('somewhere.php').done((function(el) { return function(response) {
        $(el).removeClass('someClass');
    }; })(this));
});
于 2012-07-28T15:10:52.183 に答える
0

変数thisは常に現在のコンテキスト オブジェクトを指します。

var obj = { // declare object
  a: 2,

  b: function (p) { 
    alert(this.a + p); // here 'this' will point to obj if it was run by 'obj.b();' 
  }
};

obj.b(2); // call it's method

また、現在の 'this' を設定することもできます:

var s = { a: 3 };

var obj = {
  a: 2,

  b: function (p) { 
    alert(this.a + p); // here 'this' will be s 
  }
};

obj.b.call(s, 2);

たとえば、2 つの関数 (f1) を別の関数 (f2) で使用し、f1 のコンテキストを f2 で使用できるようにする場合、最も簡単な方法はそれを変数に格納することです。

$(buttonSelector).click(function () {
  var button = $(this);

  $.post(url, function (data) {
    //here button is available
  };
});
于 2012-07-28T15:16:31.630 に答える