2011-11-12 133 views
3

我想根据HR标记从不同的DIV中的Web服务接收到的文章(= HTML内容)。使用基于HR标记的Javascript/JQuery拆分HTML中的HTML

我用一个例子来解释,这是我从服务接收:

<p>This is an article bla bla</p> <hr/> <p>this is the next page of the article blabla ...</p> 

我要打的基础上,HR-标签:

<div><p>This is an article bla bla</p></div> 
<div><p>this is the next page of the article blabla ...</p></div> 

我尝试了不同的用脑,是行不通的。我怎么能用Javascript或JQuery(或用另一种方法;-))来做到这一点?

回答

6

采用分体式创建和阵列和环通创建的div。

var html = "<p>This is an article bla bla</p> <hr/> <p>this is the next page of the article blabla ...</p>"; 


$(html.split('<hr/>')).each(function(){ 
    $('#test').append('<div>'+this+'</div>') 
}) 

Demo

+0

谢谢!它很棒! – benske

+0

Oke这是接受知道(我不知道这个选项:-)) – benske

+0

但你最好小心拼写变化,如'


','
'等。一个正则表达式会导致变化更稳健。查看此答案的示例:http://stackoverflow.com/a/40115509/263832 – xr280xr

1

尝试 -

var html = '<p>This is an article bla bla</p> <hr/> <p>this is the next page of the article blabla ...</p>' 
var htmlarr = html.split('<hr/>'); 
html = html.replace(/<hr\/>/g,''); 
$('body').append(html); 

这将只是删除所有的<hr/>当时的追加剩余contnet到page.Which我认为会达到你想要的东西,而不执行split。你可以做这样的拆分 -

var htmlarr = html.split('<hr/>'); 

这将给你一个数组,其中包含您在问题中列出的HTML的两个位。您可以使用添加到您的网页 -

$.each(htmlarr,function (index,value) { 
    $('body').append(value); 
}); 

演示 - http://jsfiddle.net/cCR34/2