2016-07-28 84 views
3

的jsfiddle:https://jsfiddle.net/9krvkfpw/jQuery的 - 前儿童特定删除所有子元素

嗨,

我试图删除所有子元素达到一定的点,但我也不太清楚是什么最有效的方法是做到这一点。

下面是一些示例代码:

<div id="container"> 
    <div id="el1">Remove</div> 
    <div id="el2">Remove</div> 
    <div id="el3">Remove</div> 
    <div id="el4">Remove</div> 
    <script type="text/javascript"> 
    // Keep 
    </script> 
    <div id="lastEl">Keep</div> 
</div> 

从本质上讲,我想做的事就是删除脚本元素之上的所有元素。我不能找到第一个脚本元素,因为有时候我会保留更多的元素,所以他们会阻碍它。

我的想法是通过点击#lastEl并获取上一个元素来获取脚本标记。

像这样:

var script = $('#container').children('#lastEl').prev(); 

从这里我不知道什么是最好的生活方式,或者如果这是再好的方法是什么?

我可以多次执行诸如script.prev().remove()之类的操作,但这并不总是奏效,因为在我开始的脚本之前总是有不同数量的元素。

任何想法都会很棒!

谢谢!

+1

查找到[prevAll()](http://api.jquery.com/prevAll/ )。 –

+0

尝试使用'$('#container')。find('#lastEl')。prev()。prevAll()。remove()' – guradio

回答

4

要回答你正在寻找确切:

从本质上讲,我想要做的就是删除脚本元素之上的所有元素

你可以做到以下几点:

$('#container script').prevAll().remove(); 

Fiddle

0

prevAll是你在找什么:

$("#lastEl").prevAll("div").remove(); 
+0

他需要保留'script'需要另一个'.prev()' '.prevAll()' – guradio

+0

没有@guradio,那是''prevAll'中'div'所做的。 – eisbehr

+0

我错过了那一个:) – guradio

0

$('#container').find('#lastEl').prev().prevAll().remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    <div id="el1">Remove</div> 
 
    <div id="el2">Remove</div> 
 
    <div id="el3">Remove</div> 
 
    <div id="el4">Remove</div> 
 
    <script type="text/javascript"> 
 
    // Keep 
 
    </script> 
 
    <div id="lastEl">Keep</div> 
 
</div>

试试这个办法

+0

这是正确的,但是为什么不直接使用'$(“#lastEl”)' ? – eisbehr

+0

@eisbehr我只是改变了OP原始代码的一些东西:) – guradio