投稿内の関数内で $(this) にアクセスするのに苦労しています。応答に応じてオブジェクトクラスを削除するだけです。
$.post("url.php?"+theData, {}, function(response){ etc.....
静的な #ID でも問題なく動作しますが、$this を操作することをお勧めします
投稿内の関数内で $(this) にアクセスするのに苦労しています。応答に応じてオブジェクトクラスを削除するだけです。
$.post("url.php?"+theData, {}, function(response){ etc.....
静的な #ID でも問題なく動作しますが、$this を操作することをお勧めします
試す
var self = this;
$.post("url.php?"+theData, {}, function(response){
$(self).show(); // manipulate this
});
これは非同期イベントからのコールバックであるためthis
、要素を指す は失われます。
外側 this
(要素)への参照を保持する必要があります。1 つの方法は、すぐに実行される関数を介してバインドすることです。
$('#something').on('click', function() {
$.post('somewhere.php').done((function(el) { return function(response) {
$(el).removeClass('someClass');
}; })(this));
});
変数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
};
});