jQuery .remove()不会删除元素

时间:2015-06-01 18:44:42

标签: javascript jquery html removechild

我尝试动态删除HTML页面中的li元素,我使用.remove()方法但是,如果我检查HTML页面,我可以看到该元素未删除,只是将其可见性更改为display: none;。 有没有办法我可以DEFINITIVELY从页面中删除元素?

这是代码段(我从li克隆#ul1并将其附加到#ul2):

var oggettoClone = $(this).clone();
oggettoClone.appendTo("#ul2");

$(oggettoClone).bind({
    click: function(o) {

        var r = confirm("Remove this element?");
        if (r == true) 
        {
            $(this).slideUp();

            setTimeout(function(){
                $(this).remove();
            }, 2000);
        }

    }
});

2 个答案:

答案 0 :(得分:1)

使用"完成" slideUp的回调函数 (http://api.jquery.com/slideup/

$(this).slideUp(function(){
    // this part will execute when slideUp is complete.
    $(this).remove();
});

答案 1 :(得分:1)

这不起作用的原因是因为你在setTimeout子函数中调用$(this)。您需要将元素定义为变量以在子函数内访问它。

$(oggettoClone).bind({
    click: function(o) {
        var r = confirm("Remove this element?");
        var t = $(this);
        if (r == true) {
            $(t).slideUp();
            setTimeout(function(){
                $(t).remove();
            }, 2000);
        }

    }
});

或关注andi的建议并使用.sideUp()的回调选项:

$(oggettoClone).bind({
    click: function(o) {
        var r = confirm("Remove this element?");
        if (r == true) {
            $(this).slideUp(function(){
                $(this).remove();
            });
        }
    }
});