jQuery中的所有内容都在工作,但不是.remove() 我尝试过使用.closest()和.parent()但是没有工作
jQuery代码:
$(document).on('click', 'a#withdraw', function() {
$.ajax({
//ajax info
},
success: function(e) {
if (e.type == 'error') {
$("#bank .message").html(e.message).addClass('error').removeClass('showoff');
} else {
var total = parseInt($('#bank #total').html());
$("#bank #total").html(total - 1);
$(this).closest('li').remove();
}
}
});
});
HTML代码:
<ul class="bank-items" id="bank-items">
<li data-id="1">
Item Name
<a href="#" id="iteminfo" data-item="4" title="Information"><img src="..." alt="info" /></a>
<a href="#" id="withdraw" data-id="1" title="Withdraw"><img src="..." alt="withdraw" /></a>
</li>
.
.
.
</ul>
答案 0 :(得分:1)
成功回调中的问题是this
没有引用被点击的锚元素,它引用了ajax对象。
一种解决方案是使用context选项为回调传递自定义上下文,如
$(document).on('click', 'a#withdraw', function () {
$.ajax({
//ajax info
context: this,
success: function (e) {
if (e.type == 'error') {
$("#bank .message").html(e.message).addClass('error').removeClass('showoff');
} else {
var total = parseInt($('#bank #total').html());
$("#bank #total").html(total - 1);
$(this).closest('li').remove();
}
}
});
});
另请注意,元素的ID必须是唯一的,因此如果您有多个a#withdraw
元素,请将withdraw
用作类而不是ID。