2016-07-28 104 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