2013-03-29 33 views
0

比方說,我有這樣的事情:jQuery的刪除文本

<p> 
<h1>Coming events</h1> 
<br> 
randomtext 
randomtext 
randomtext 
<h1>Past events</h1> 
<br> 
randomtext 
randomtext 
randomtext 
</p> 

我要刪除包含已結束的活動和文字afther那的每一行,直到<p>關閉的H1。我試過圍繞一個div,但這似乎不適合我。我仍然在jQuery的學習過程中。

所以我想到的是jQuery的運行後的輸出將是如下:

<p> 
    <h1>Coming events</h1> 
    <br> 
    randomtext 
    randomtext 
    randomtext 
</p> 

解決:往事在一個div的H1後 我包裹一切,去除這個。

$("h1:contains('Past events')").nextUntil('p').wrapAll("<div class='financialclass'></div>"); 
    $('.financialclass').remove(); 
    $("h1:contains('Past events')").remove(); 

感謝大家的幫忙!

+4

你可能要考慮重新格式化HTML - 標題元素不應該b嵌套在段落中。它應該在段落之前。 – Terry

+0

這不是遺憾的是HTML正在使用HTML敏捷性包 – BasvdPol

+0

您可以加入一個預期結果的外部網站解析選項...它是一種不清楚你期望的時刻是什麼。 – KyorCode

回答

1

這樣做會包裝一個div正確的做法:

<p> 
<div id="sectionA"> 
    <h1>Coming events</h1> 
    <br> 
    randomtext 
    randomtext 
    randomtext 
</div> 
<div id="sectionB"> 
    <h1>Past events</h1> 
    <br> 
    randomtext 
    randomtext 
    randomtext 
</div> 
</p> 

,然後刪除它像這樣:$('#sectionB').remove();

但如果你不能,你可以刪除這樣的文字:

var text = $('p').html(); 
text = text.substr(0,text.indexOf("<h1>Past events</h1>")); 
$('p').html(text); 
+0

尼斯一個,我試圖用'畢竟()','空()'和'刪除去做()'但沒有容器是不可能的。 – Jivings

+0

謝謝包裝它是解決方案! – BasvdPol

0
var $parent = $('p:first').parent(); 
var text = $parent.html(); 
$parent.html(text.substr(0, text.indexOf("<h1>Past events</h1>"))); 
+0

http://jsfiddle.net/C9ntQ/ –