jquery。删除不按预期工作

时间:2011-09-28 10:06:36

标签: javascript jquery

当我点击关闭按钮时,我有以下应该删除元素“.mycontainer”。但它并没有删除元素。当我使用萤火虫。我可以看到它只是在代码的开头将它移动到html标记之外。

    $('.closeButton').click( function() {
       $(".mycontainer").slideUp( function() {
           $(".closeButton").parent().appendTo(".ContentsHolder");        
           $(this).remove();
       });
    });

如果我注释掉第3行//$(".closeButton").parent().appendTo(".ContentsHolder");

,它就有效

但这会删除内容,因此我无法再次访问它。

编辑:

我的html看起来像这样,如果它有助于理解我在做什么......

<div class='ContentsHolder'>

</div>
<div class='mycontainer'>
    <div class='myContent'>
        <a class='closebutton'>close</a>
        ... other content ...
    </div>
</div>

我还设法通过延迟删除我的容器$(this).delay(500).remove();

来使其工作

我不认为这是一个很好的解决方案。

3 个答案:

答案 0 :(得分:2)

您可以在slideUp之后链接remove函数,如下所示:

 $('.closeButton').click( function() {
       $(".mycontainer").slideUp( function() {
           $(".closeButton").parent().appendTo(".ContentsHolder");        
       }).remove();
    });

答案 1 :(得分:1)

看起来$(this)与您的想法不同。

尝试添加console.log($(this));以查看控制台中的实际上下文。

$('.closeButton').click( function() {
    $(".mycontainer").slideUp( function() {
        $(".closeButton").parent().appendTo(".ContentsHolder");
        console.log($(this));
        $(this).remove();
    });
});

答案 2 :(得分:1)

我之前解决了同样的问题:

$(".mycontainer").slideUp(500, function() { 
    $(this).remove(); 
});