繁体   English   中英

jQuery .remove()从容器中删除了我所有的孩子,而不仅仅是一个

[英]jQuery .remove() removes all my children from the container not just one

我正在使用aJax调用构建完整的页面过渡。 我要在加载新页面时从DOM中删除内容。 某些原因.remove()会从父容器中删除所有子项,即使我在其上添加了唯一的类或ID。 我尝试了几种方法来定位要删除的元素,但它仍在做同样的事情。 remove()应该只删除一个元素,即具有类名'remove-from-dom'的元素。当我使用addClass时,它将正确地定位到该元素。

                    $(response).prependTo('.swap-content');

                    var slideWidth = $('.swap-content').width();
                    $('.ajax-load-in-remove').animate({
                        left: + slideWidth
                    }, 1000, function () {
                        $('.ajax-load-in-remove').css('left', '').removeClass('hide-me');
                        $('.ajax-load-in-remove').last().addClass('remove-from-dom');
                        $('.remove-from-dom').remove();

                    });

我的容器看起来像这样

    <div class="parent">
        <div class="child">
        <div>
        <div class="child remove-from-dom">
       <div>
    </div>

.remove()应该只删除容器中的最后一个子节点,但同时删除两个子节点。 我只有两个孩子。 我尝试使用ID,并已使用.last-child和.last()

如果要删除最后一个.ajax-load-in-remove ,请使用

$('.ajax-load-in-remove').last().remove();

您无需向此元素添加remove-from-dom类,这仅是执行操作的一步。

问题是动画结束时您正在回调内部进行删除。

但是您正在许多元素$('.ajax-load-in-remove').animate ,因此将为每个动画结尾触发回调。 并且每个回调都将删除当前的最后一个元素。

您可以使用.promise来解析所有动画的完成时间。

$('.ajax-load-in-remove')
  .animate({
    left: +slideWidth
  }, 1000)
  .promise()
  .then(function() {
    $('.ajax-load-in-remove').css('left', '').removeClass('hide-me');
    $('.ajax-load-in-remove').last().remove();
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM