提问者:小点点

如何从字符串中删除只包含特定类名而不包含内部内容的html标记(span)?


我想从字符串中删除一些不需要的标记,以便将干净的字符串存储到数据库中。

我已经尝试将字符串与regex表达式联系起来。这是我尝试过的--https://codepen.io/rushijagani/pen/wzxwrj

var data = '<p><span class="unwanted-span-one" data-hello="unwated-attr">Donec</span> rutrum congue leo eget malesuada. <span>Mauris</span> blandit aliquet elit, eget <span class="unwanted-span-two" data-hello="unwated-attr-two"> malesuada</span>.</p>'

我想删除所有的span标记,它有一个以“unwanted-span-”开头的类名,它应该只删除标签包装而不是内容内部。

因此所需输出应如下所示

var data = '<p>Donec rutrum congue leo eget malesuada. <span>Mauris</span> blandit aliquet elit, eget malesuada.</p>'

请注意--我们只需要删除类名开头为“unwanted-span-”的span标记,其他span应该保持原样。


共2个答案

匿名用户

您可以简单地使用

var allData = $('*[class^="unwanted-span-"]').contents().unwrap();
console.log($(".all").html())

如果您不想更改HTML,可以这样做:

var match = $('*[class^="unwanted-span-"]').get(0);
var test = $('p').html().replace(match.outerHTML,match.innerHTML);
console.log( test );

当然,如果有多个匹配项,则必须对所有匹配项进行迭代:)

匿名用户

您可以使用starts with运算符,如下所示:

var allData = $('.all').find("span[class^='unwanted-span']").css('color','blue');

我编辑您的代码接口容器https://codepen.io/anon/pen/qwyayp

若要删除,请使用以下命令:

var allData = $('.all').find("span[class^='unwanted-span']").remove(); 

要打开跨转文本,请使用以下命令:

var allData = $('.all').find('span[class^="unwanted-span-"]').contents().unwrap();

console.log($('.all').html());