Javascript 什么';除了jQuery中的一个特定标记外,从DOM块中剥离所有标记的更好方法是什么?
我有一个HTML片段,我想解析并删除所有HTML标记,但我想保留的特定标记除外。我已经做了,但我认为有更好的方法。 在下面的示例中,我只想保留em标记(以保留强调的文本):Javascript 什么';除了jQuery中的一个特定标记外,从DOM块中剥离所有标记的更好方法是什么?,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个HTML片段,我想解析并删除所有HTML标记,但我想保留的特定标记除外。我已经做了,但我认为有更好的方法。 在下面的示例中,我只想保留em标记(以保留强调的文本): html=“Info:这是一个html块,我想对其进行解析和修复”; description=$(html.text(); var ems=$(html).find(“em”);//查找所有em标记 //搜索每个em文本的原始描述,并在它们之间添加标记。 $(ems).each(函数(){ description=descr
html=“Info:这是一个html块,我想对其进行解析和修复”;
description=$(html.text();
var ems=$(html).find(“em”);//查找所有em标记
//搜索每个em文本的原始描述,并在它们之间添加标记。
$(ems).each(函数(){
description=description.replace(this.innerHTML,“+this.innerHTML+”);
});
控制台日志(描述);
该代码的结果是:
Info: This is a <em>HTML</em> block that I would like to parse and fix
Info:这是一个我想要解析和修复的HTML块
还有其他的想法吗
不一定必须是jQuery,可以是纯javascript
谢谢您可以使用
html = "<div><b>Info:</b> <p>This is a <em>HTML</em> block that <span>I would like</span> to parse and fix</p></div>";
var $h = $('<div>'+html+'</div>');
$h.find('*:not(em)').contents().unwrap();
console.log($h.html())
html=“Info:这是一个html块,我想对其进行解析和修复”;
变量$h=$(''+html+'');
$h.find(“*:not(em)”.contents().unwrap();
console.log($h.html())
演示:听起来像是你想用内容替换所有元素,除了
:
var tmp=document.createElement('div');
tmp.innerHTML=html;
var tags=tmp.getElementsByTagName('*'),l=tags.length,i;
对于(i=0;i
html = "<div><b>Info:</b> <p>This is a <em>HTML</em> block that <span>I would like</span> to parse and fix</p></div>";
var $h = $('<div>'+html+'</div>');
$h.find('*:not(em)').contents().unwrap();
console.log($h.html())
var tmp = document.createElement('div');
tmp.innerHTML = html;
var tags = tmp.getElementsByTagName('*'), l = tags.length, i;
for( i=0; i<l; i++) {
if( tags[i].tagName == "EM") continue;
while(tags[i].firstChild) {
tags[i].parentNode.insertBefore(tags[i].firstChild,tags[i]);
}
tags[i].parentNode.removeChild(tags[i]);
}
var result = tmp.innerHTML;