我正在进行$ .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),或者这种方式是否正常工作?
答案 0 :(得分:6)
你拥有它的方式就好了。默认情况下,jQuery中的this
ajax回调是ajax设置对象(您可以通过$.ajaxSettings
设置)。 $.ajax
还有一个context
属性,您可以设置:
$.ajax({
url: url,
data: data,
context: this,
success: success
});
然后您可以按预期使用$(this)
,但我个人认为this
的重新分配更容易理解。但是,您可能希望选择一个比old_this
更好的变量名称。