2012-07-17 33 views
-3

我試圖找到一類.INFO發現自動換行用一個div

$(document).ready(function() { 
var content = $('.content').html(); 
var regex = /INFO.*ENDINFO/gi; 
var info = content.match(regex); 

$('.INFO').html(info); 
});​ 

開口的收盤字如INFOENDINFO和這兩個詞內換行一切一個div例如:之前。

<div class="project_content"><img src="http://lorempixel.com/g/400/200/"> 
<br> 
INFO 
<br> 
Hello I'm an info div 
<br> 
ENDINFO 
<br> 
Additonal content outside of info div 

</div>​ 

後:

<div class="project_content"><img src="http://lorempixel.com/g/400/200/"> 
<br> 
<div class=".INFO"> 
<br> 
Hello I'm an info div 
<br> 
</div> 
<br> 
Additonal content outside of info div 

</div>​ 

這似乎並沒有工作。正如您在jsfiddle中看到的那樣。任何幫助都會很棒。

+1

'$('。INFO')'不會匹配任何DOM元素,所以什麼也不做。 – 2012-07-17 12:27:07

+0

和生成的'.info'應該去哪兒?附加到「身體」或內部的另一個元素? – 2012-07-17 12:30:08

+0

你的意思是創建一個新的DIV,或追加到一個現有的'.INFO'類? – Utkanos 2012-07-17 12:31:46

回答

2

從你的示例代碼,它看起來像你可能要擦亮如何jQuery的工程。您使用的選擇器(.INFO#content)與HTML中的任何元素都不匹配,因此您的代碼無法執行任何操作。

爲了讓您一開始,這裏有一個方法來實現你說什麼:http://jsfiddle.net/JRHse/6/

$(document).ready(function(){ 
    var html = $('#project_content').html(); 
    var new_html = html.replace(/(INFO((.|\s)*?)ENDINFO)/, "<div class='INFO'>$2</div>"); 
    $('#project_content').html(new_html);   
}); 

下面的代碼的快速崩潰:

$('#project_content') 

該元素與id='project_content'匹配。

var html = $('#project_content').html(); 

我們定位該元素並將其HTML內容存儲在html var。

var new_html = html.replace(/(INFO((.|\s)*?)ENDINFO)/, "<div class='INFO'>$2</div>"); 

然後,我們執行所需的替換,並將輸出存儲爲new_html

$('#project_content').html(new_html); 

最後,我們用修改後的版本覆蓋HTML內容。

+0

這太棒了。有沒有辦法避免原始文本和CSS的閃光? http://jsfiddle.net/QDqX4/ – uriah 2012-07-17 12:41:53

+0

@uriah你的小提琴的包裝被設置爲'onLoad'(圖像完成加載後),當你把它放在無包裝(頭部)時,閃光將會小得多:[更新小提琴] (http://jsfiddle.net/QDqX4/1/) – 2012-07-17 12:44:29

+0

再次感謝肖恩,我一直在努力這一段時間。並感謝您的細分 – uriah 2012-07-17 12:46:05

1

'.'將不匹配white-space個字符。試試這個正則表達式:

var regex = /INFO(.|\s)*ENDINFO/gi; 

​​