2013-06-05 31 views
2

它的內容可以說我有一個像這樣的字符串:刪除DIV和HTML字符串

<div id="div1"></div> 
<div class="aClass" id="div2"> 
    <div id="div3" class="anotherClass"></div> 
    <div id="div4" /> 
</div> 
<div id="div5"></div> 

我想從字符串和一切刪除DIV2內該div

,所以我就一個字符串如這

<div id="div1"></div> 
<div id="div5"></div> 

我想這樣用正則表達式來找到「DIV2」或什麼的div id爲ID的第一個div和算括號,直到它到達「</DIV>」。問題在於「div3」最後還得到了「</div>」。

我想要刪除的div的內容也可能包含更多或更少的div。

關於如何編碼的任何想法?

更新:

   var htmlText = editor3.getValue(); 
      var jHtmlObject = jQuery(htmlText); 
      jHtmlObject.find("#div2").remove(); 
      var newHtml = jHtmlObject.html(); 
      console.log(newHtml); 

爲什麼沒有這個返回任何控制檯?

UPDATE2 !: 我已經做了的jsfiddle,使我的問題視覺.. http://jsfiddle.net/WGXHS/

+0

你不需要爲此付出很多努力:)只需使用jquery的'.remove()'功能。 – dreamweiver

+0

用正則表達式解析HTML會[讓你瘋了](http://stackoverflow.com/a/1732454/2430028)。 [你可以使用'DOMParser'](http://stackoverflow.com/a/3104237/2430028)並從那裏刪除div。 ()# – user2000008

+0

$('#div2')。remove() –

回答

11

只要把字符串轉換成jQuery和使用發現,然後刪除。

var htmlString = '<div id="div1"></div>\ 
<div class="aClass" id="div2">\ 
    <div id="div3" class="anotherClass"></div>\ 
    <div id="div4" />\ 
</div>\ 
<div id="div5"></div>'; 

var jHtmlObject = jQuery(htmlString); 
var editor = jQuery("<p>").append(jHtmlObject); 
editor.find("#div2").remove(); 
var newHtml = editor.html(); 
+0

var htmlText = editor3.getValue(); var jHtmlObject = jQuery(htmlText); var newHtml = jHtmlObject.find(「#div1」)。remove(); console.log(newHtml); 得到此錯誤: 未捕獲錯誤:語法錯誤,無法識別的表達式:

Koiski

+0

remove不返回新字符串,您必須執行'jHtmlObject。html();'獲取html。 –

+0

那麼我怎麼把它放在一個字符串? var newHtml = jHtmlObject.html(); 給了我同樣的錯誤.. – Koiski

2

jQuery的.remove()會做

$("#div2").remove(); 
2

如果你有機會獲得jQuery和你的HTML是DOM的一部分,你可以使用$.remove()

EG。 $('#div2').remove();

如果不是DOM的一部分,你必須在一個字符串,你可以這樣做:

$('#div2', $(myHTML)).remove();

0

正則表達式選項將工作如果你控制生成的字符串,這樣你就可以確保屬性和縮進順序等。如果不是最好的選擇是使用HTML解析器。如果你在瀏覽器中工作,jQuery是一個不錯的選擇。如果你在服務器端工作,你需要爲你選擇的語言找到一個解析器。