我有以下结构,它有几行,如:
<tr class="tableRow">
<td>blah</td>
<td>blah</td>
<td><button id="13" class="deleteMailshot" type="button"></button></td>
</tr>
我想执行ajax调用以删除所选择的邮件,然后删除该行。
我使用的是.closest()
,但它没有找到它......这就是我正在尝试的内容:
$.ajax({
type: "POST",
url: '/ajax/actions/deleteMailshot.php',
data: {mailshot_id:mailshot_id},
success: function(data) {
$(this).closest('.tableRow').fadeOut();
}
});
我也尝试过:
$(this).parent().parent('.tableRow').fadeOut();
答案 0 :(得分:4)
将此分配给AJAX
之前的变量。这指的是success
上匿名函数内的其他内容。
E.g。
var $button = $(this);
然后使用:
$button.closest...
答案 1 :(得分:3)
试试这个
var self = $(this);
$.ajax({
....
success: function(data) {
self.closest('.tableRow').fadeOut(); // use self
答案 2 :(得分:3)
您可以使用context
选项进行ajax调用,以控制成功处理程序中this
指针的设置内容:
$.ajax({
type: "POST",
url: '/ajax/actions/deleteMailshot.php',
data: {mailshot_id:mailshot_id},
context: this,
success: function(data) {
$(this).closest('.tableRow').fadeOut();
}
});
默认情况下,成功处理程序中的this
指向调用中使用的ajax设置对象,但如果不需要对该对象的引用,则设置context
属性允许您保持this
与调用$.ajax()
时相同,以便您可以直接使用它,而无需在其他答案中提供解决方法。