我在访问帖子内函数内部的 $(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
(元素)的引用。一种方法是通过一个立即执行的函数来绑定它:
$('#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);
例如,如果您在另一个 (f2) 中使用 2 个函数 (f1) 并且 f1 的上下文应该在 f2 中可用,那么最简单的方法是将其存储在变量中;
$(buttonSelector).click(function () {
var button = $(this);
$.post(url, function (data) {
//here button is available
};
});