Firebug表示我有TypeError: a.ownerDocument is undefined
代码:
$(this).text('Updated!').fadeOut('900', function() {
$(this).text('Update').attr('disabled', 'disabled').show()
});
更完整的片段如下:
$(".update-role").click(function() {
var newRole = $(this).prev().val();
var userId = $(this).parents('tr').attr('id'); // e.g. 'user-role-18'
userId = userId.split('-');
userId = userId[2]; // so we get '18'
$.getJSON('services/update_staff_role.php', {r: newRole, id: userId}, function(j) {
if(j.result == 'success') {
$(this).text('Updated!').fadeOut('900', function() {
$(this).text('Update').attr('disabled', 'disabled').show()
});
} else {
alert(j.reason);
}
});
console.info(userId, newRole);
});
可能是因为我正在使用this
,因为我在另一个callback
内使用了callback
吗?
答案 0 :(得分:6)
添加var _this = $(this);
,而不是$(this).text..
使用_this.text...
,因为$(this)
引用了$.getJSON
:
$(".update-role").click(function() {
var _this = $(this);
var newRole = $(this).prev().val();
var userId = $(this).parents('tr').attr('id');
userId = userId.split('-');
userId = userId[2];
$.getJSON('services/update_staff_role.php', {r: newRole, id: userId}, function(j) {
if(j.result == 'success') {
_this.text('Updated!').fadeOut('900', function() {
$(this).text('Update').attr('disabled', 'disabled').show()
});
} else {
alert(j.reason);
}
});
console.info(userId, newRole);
});
答案 1 :(得分:2)
是的,this
,在回调内部时,并不是指被点击的按钮。在调用$ .getJSON之前,您可以将按钮引用存储在变量中,然后在回调中访问该变量。