2015-11-06 37 views
-1

我認爲這應該是非常簡單的實現,但我不知道我應該在哪裏搜索。如何通過腳本關閉html標籤?

我想要的是以下內容。我有一個腳本可以搜索字符串[gallery]。當找到[gallery]時,它會用圖像替換標籤。我已經實現瞭如下:

var raw_data = data.text; 
var output = '<figure><img src="//placehold.it/100x100?image」></figure>'; 
parsedHTML = raw_data.replace(/\[gallery\]/ig, output); 
$('article').html(parsedHTML); 

現在我想能夠獲得[gallery]前後的html標籤。 所以要清楚在這個例子中,代碼應該獲取段落標記<p></p>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam convallis quam ac tristique imperdiet. **[gallery]** Mauris sit amet mi dignissim, lacinia odio non, porttitor est. Maecenas imperdiet quis sem quis elementum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.<p> 

後它的HTML標記,收盤前[圖庫] P和後打開一個段落。 尋找一些建議。 在此先感謝。

+0

使用HTML解析器。避免使用正則表達式來處理HTML。 – Quentin

+0

外部標籤是否總是'

'和'

'?或者他們可以是任何其他標籤? – sideroxylon

+0

任何標籤。它應該搜索哪個標籤是標籤之前和之後的第一個標籤。 @sideroxylon – Caspert

回答

0

正如大家所說,避免一個複雜的正則表達式解決方案。如果你只是想在圖像前後創建一個換行符,你可以用基本的字符串替換來嘗試這樣的事情。

var input = 'IMAGE ID'; 
 

 
var str = '<p>blah blah blah [gallery] blah blah blah [gallery]</p>'; 
 

 
var output = str.replace(/\[gallery\]/g, '<br>' + input + '<br>'); 
 

 
$('#original').html(str); 
 
$('#replaced').html(output);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id = "original"></div> 
 
<div id = "replaced"></div>

1

或者關於把在P標籤在那裏已經怎麼樣?

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam convallis quam ac tristique imperdiet</p> 
<div class="gallery"></div> 
<p>Mauris sit amet mi dignissim, lacinia odio non, porttitor est. Maecenas imperdiet quis sem quis elementum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.<p> 

然後爲你的jQuery:

var output = '<figure><img src="//placehold.it/100x100?image」></figure>'; 
$("div.gallery").replaceWith(output); 

插入標籤到您的DOM稍後詢問屠殺的路線,如果他們已經在那裏,你知道他們是如何去表現!