-3

我正在尝试找到一个开头的结束词,例如INFOandENDINFO并将这两个词中的所有内容包装在一个带有类的 div 中.INFO

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

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

例如:以前。

<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中看到的那样。任何帮助都会很棒。

4

2 回答 2

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 内容存储在htmlvar 中。

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

然后我们执行您想要的替换并将输出存储为new_html.

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

最后,我们用修改后的版本覆盖 HTML 内容。

于 2012-07-17T12:37:54.660 回答
1

' .' 不会匹配white-space字符。试试这个正则表达式:

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

现场演示

于 2012-07-17T12:30:59.323 回答