使用jQuery删除两个div之间的div

5

我需要移除两个静态的 div 元素之间动态加载的 div 元素。

HTML

<div id="defaultFirst">
</div>
..
..
..
<div id="defaultLast">
</div>

有一些
元素被加载在两个静态
元素之间。现在我需要在添加其他元素之前将它们删除。
我尝试使用$('#defaultFirst').nextAll('div').remove(),但是这也删除了#defaultLast元素。
我知道我可以获取动态
的id并进行删除。但是我需要知道是否有更简单的方法来删除这些动态
元素?

1
尝试使用 $('#defaultFirst').nextAll('div').not("#defaultLast").remove()$('#defaultFirst').nextAll('div').not(".doNotRemoveClass").remove() 来删除更多元素。 - sTx
2个回答

11
使用 nextUntil() 替代 nextAll(),并传入一个选择器以选中你的 #defaultLast 元素:
$('#defaultFirst').nextUntil('#defaultLast').remove();

.nextUntil( [selector ] [, filter ] )

描述:获取每个元素之后的所有兄弟元素,直到但不包括与选择器、DOM节点或传递的jQuery对象匹配的元素。

jQuery的 nextUntil() 文档

如果您在这两个元素之间有不是div元素的元素而您不想将它们删除,您可以通过向remove()调用中传入一个选择器来只删除div元素:

$('#defaultFirst').nextUntil('#defaultLast').remove('div');

3
喜欢你编辑答案的方式。提供了更深入的信息。 - Aakash Thakur
这里有一个可供参考的工作示例:https://jsfiddle.net/r9pzfkge/ - Deckerz
谢谢你回复的更快了。 - A Coder

5

我建议首先找出div出现的原因,而不是像这样进行hack。但是如果你非要这样做,那么以下方法应该有效:

$('#defaultFirst').nextAll('div').not('#defaultLast').remove();

Codepen例子 - http://codepen.io/webknit/pen/ZeZXdQ

这是一个Codepen的示例,访问链接可以查看更多细节。

1
@Webknit,我没有。他之前因为错误的帖子得到了一个,现在更新后得到了赞。 - A Coder
好的,我也会点赞。这样你就可以在 Stack Overflow 上评论更多的问题了。 - Aakash Thakur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接