parent / nearest .remove - jQuery

时间:2015-07-12 02:05:22

标签: jquery parent closest

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>

1 个答案:

答案 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。