我正在调用 $.ajax,但下面的代码没有按预期工作。警报结果为“未定义”
$(document).ready( function {
$(".elem").on("click", function(e) {
e.preventDefault();
$.ajax( {
url: 'index.php',
data: {
'action': 'something'
},
success: function() {
alert($(this).data("foobar"));
}
});
});
)};
但是,在进入 ajax 函数之前,我可以通过向 $(this)
添加别名来使其正常工作。
$(document).ready( function {
$(".elem").on("click", function(e) {
var old_this = $(this);
e.preventDefault();
$.ajax( {
url: 'index.php',
data: {
'action': 'something'
},
success: function() {
alert(old_this.data("foobar"));
}
});
});
)};
我无法为被点击的元素分配唯一 ID,因此无法通过 $("#id") 访问它。
是否有更标准化的方法来访问在进入成功函数之前就存在的 $(this),或者这种方法是否可以正常工作?
最佳答案
你拥有它的方式很好。默认情况下,jQuery ajax 回调中的 this
是 ajax 设置对象(您可以通过 $.ajaxSettings
进行设置)。 $.ajax
还有一个可以设置的 context
属性:
$.ajax({
url: url,
data: data,
context: this,
success: success
});
然后您可以按预期使用$(this)
,但我个人觉得this
的重新分配更容易理解。不过,您可能希望选择一个比 old_this
更好的变量名。
关于javascript - jQuery:在 $.ajax 成功函数中使用 $(this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23942834/