parent/closest.删除 - jQuery

parent/closest .remove - jQuery

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>

问题是成功回调中的 this 不引用单击的锚元素,它引用 ajax 对象。

一种解决方案是使用上下文选项为回调传递自定义上下文,例如

$(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 作为 class 而不是 ID。