我有以下HTML字符串,我只需删除特定的span标记(具有pre属性的标记),但保留span内容
"<P>it <SPAN class='pre="it' ?>is is</SPAN> a movie</P>"
我需要以下输出,
"<P>it is is a movie</P>"
答案 0 :(得分:4)
好吧,首先你应该尝试使用有效的HTML。然后你可以使用这段代码:
$("<p>it <span class='pre'>is is</span> a movie</p>")
.find('span') //Used 'span' here since you'll probably change the class name
.contents()
.unwrap()
.parent();
来自jQuery doc:
.unwrap()方法删除了元素的父元素。这实际上是.wrap()方法的反转。匹配的元素(以及它们的兄弟,如果有的话)在DOM结构中替换它们的父节点。
您需要定位跨度的内容以打开跨度本身。
答案 1 :(得分:3)
试试这个:
var html = '<p>it <span class="pre">is is</span> a movie</p>';
var $element = $(html);
$element.find('.pre').contents().unwrap();
建议@ Sunny-r-gupta,如果你想要修改后的字符串......
var modifiedHtml = $element.wrap('<div></div>').parent().html();
答案 2 :(得分:0)
$('.pre').unwrap();
你的html字符串应为:
"<P>it <SPAN class='pre'>is is</SPAN> a movie</P>"
答案 3 :(得分:0)
这是基于输入类型和输出的代码
p
标记内的任何内容都会保存在var html
中。
按钮用于帮助您了解其工作原理。
答案 4 :(得分:0)
试试这段代码
var str = $('<p>it <span class="pre">is is</span> a movie</p>').text();
// str would be "it is is a movie".
var newStr = '<p>' + str + '</p>';
// newStr would be "<p>it is is a movie</p>"
答案 5 :(得分:0)
你可以在修复yor string后使用正则表达式:
你的字符串不应该像"<P>it <SPAN class='pre="it' ?>is is</SPAN> a movie</P>"
那样,因为在这个字符串中你创建了一个java脚本错误“Uncaught SyntaxError: Unexpected token ILLEGAL
”所以它的字符串应该如下例所示:
"<P>it <SPAN class='pre=" + "it' ?>is is</SPAN> a movie</P>"
或
"<P>it <SPAN class='' pre='it' ?>is is</SPAN> a movie</P>"
或
"<P>it <SPAN class='' pre='it' ?>is is</SPAN> a movie</P>"
或
"<P>it <SPAN class='pre=it' ?>is is</SPAN> a movie</P>"
然后使用正则表达式模式来获得您喜欢的字符串:
<强> JavaScript Code:
强>
var s= "<P>it <SPAN class='pre=it' ?>is is</SPAN> a movie</P>";
var desireString = s.replace(/<span[^>]+\?\>/i, '').replace(/<\/span>/i, '');
console.log(desireString);
<强> Output:
强>
<P>it is is a movie</P>