给出以下HTML代码:
<div id="content">
Lorem ipsum <b>dolor sit</b> amet...
<myTag>Blablabla</myTag>
consectetur <b>adipiscing</b> elit...
</div>
我想要做的是分开提取
Lorem ipsum <b>dolor sit</b> amet...
和
consectetur <b>adipiscing</b> elit...
换句话说,我想提取元素<myTag>
之前div中包含的所有内容以及元素<myTag>
之后div中包含的所有内容
我怎样才能做到这一点?
答案 0 :(得分:2)
试试这个:
var contentStr = $('#content').html();
var splitPos = '<myTag>' + $('myTag').html() + '</myTag>';
contentStr.split(splitPos);
现在你有一个包含之前和之后的数组。
答案 1 :(得分:2)
之前:
$('#content').html().split(/<mytag>.*<\/mytag>/)[0]
后:
$('#content').html().split(/<mytag>.*<\/mytag>/)[1]
答案 2 :(得分:0)
您可以从div html中获取字符串,并使用substr()
var myString = $('#content').html();
var firstPart = myString.substr(0,myString.indexOf('<myTag>'));
var secondPart = myString.substr(myString.lastIndexOf('</myTag>')+8);
答案 3 :(得分:0)
从父元素中获取文本并从中剪切myTag文本
var a = $("myTag").parent().text();
a = a.replace($("myTag").text(), "");
这就是你想要的吗?
编辑:哦,你想要他们分开,Y.Puzyrenko已经发布了如何做到这一点的答案
答案 4 :(得分:0)
这个怎么样:
var content = $("#content").find('myTag').remove().end().html();
这会按ID获取元素,找到&#34; myTag&#34;,将其删除,然后返回HTML。
答案 5 :(得分:0)
尝试
var content = $.map(
$("#content").contents()
, function(val, idx) {
return $(val).is("myTag") ? null : val.outerHTML || val.textContent
})
var content = $.map(
$("#content").contents()
, function(val, idx) {
return $(val).is("myTag") ? null : val.outerHTML || val.textContent
})
console.log(content)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="content">
Lorem ipsum <b>dolor sit</b> amet...
<myTag>Blablabla</myTag>
consectetur <b>adipiscing</b> elit...
</div>