用jQuery删除周围的双span标签.如何解决这个问题
Remove surrounding double span tags with jQuery. How to solve this?
我对使用jquery选择器和span函数感到困惑-需要一些帮助:-)
在一大块html内容中,我想删除所有排序的SPAN标签,这些标签由特定的类定义(包括子标签),,但保留内部SPAN的内容,因为它是(纯文本)。
下面是一个HTML内容的例子:
<div id="SaveInfo">
<p>another content <span class="MyClass green">An expaination: <span>with a span</span></span> and more</p>
<p>another content <span class="MyClass">An explaination: <span>Content in span</span></span> and more content</p>
<!-- But NOT select this one (without .MyClass) -->
<p>another content <span class="green">Content in span</span> and more content</p>
</div>
输出应该是:
(删除一些特定的周围span)
<div id="SaveInfo">
<p>another content with a span and more</p>
<p>another content Content in span and more content</p>
<!-- But NOT removed this one (without .MyClass) -->
<p>another content <span class="green">Content in span</span> and more content</p>
</div>
内容在jquery循环中,如下所示:
result += 'HTML content from each loop from before';
然后我用这个:
// set the content for further use
jQuery('#SaveInfo').html(result);
// removes instances of .RedClass from SaveInfo
jQuery('#SaveInfo .RedClass').remove();
和它的所有内容删除不需要的div,但保留其余的。
现在我需要删除周围的span,但保留内部span的内容(作为文本)。
模式如下:
每个:<span class="MyClass anotherclass">Info text <span>main content</span></span>
应该转换为:
main content
,并保持它在HTML其余部分的位置。
所以我实际上想要的是为每个span.MyClass span
选择内容,并在HTML内容中各自的位置输出纯文本。
我已经看过unwrap()
,但还没有得到工作的预期。
现在我在jQuery 1.7.1环境中工作。
我已经力不从心了,请求帮助:-)
从前面的答案开始:
$('.MyClass').replaceWith(function(){
var text = $(this).children("span").text();
if(text!="") return text;
else $(this).remove();
})
这不会把其他内部子元素的内容放在span之外,在这个例子中:
<span class="MyClass">An explaination: <b>Content in span</b></span>
并将删除没有span子span的MyClass span。这种情况下:
<span class="MyClass">An explaination:</span>
https://jsfiddle.net/vov36trq/4/如果你不想删除没有span的MyClass span:
$('.MyClass').replaceWith(function(){
return $(this).children("span").text();
})
可以使用replaceWith(function)
。这将遍历所有实例并单独处理它们
$('.MyClass').replaceWith(function(){
return $(this).children().text();
});
演示您知道MyClass
是否只存在于嵌套的span
元素的情况下吗?
因为您指定了jQuery 1.7。x,我选择不做这个假设因为其他解都不成立。我的版本遍历子span
元素并替换父元素。如果子元素不存在,即使应用了MyClass
,父元素上也不会有任何改变。
$("span.MyClass>span").each(function () {
var childText = $(this).text();
var parent = $(this).parent();
$(parent).replaceWith(childText);
});
例子:JSFiddle
相关文章:
- 如何解决Yii中的页面刷新问题
- 简单的ES6承诺问题-交换解决和拒绝参数
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- jQuery通过步骤的自排队循环来解决延迟问题
- 当服务器从 http 更改为 https 时,有哪些可能的方法可以解决问题
- 如何使用共享按钮将所有内容对齐到一行来解决问题
- 使用 unity,我的 js 文件无法解决问题
- 缺少 iframe ie8.相对定位不能解决问题
- 如何删除给定字符串中的 CRLF 以解决问题
- 为什么 标记将空格替换为 %2520?如何解决问题
- 使用javascript使用算法解决问题
- 请解决问题在我的AJAX脚本的联系形式
- Angular Js ->UI -路由->解决问题
- 运动:rna转录.正在努力解决问题
- JQuery addClass不透明度函数淡入图像-解决问题
- 如何通过程序解决问题
- JavaScript Promise在解决问题时陷入困境
- Chrome文件夹上传API.检测支持&使用JS/JQuery解决问题
- Angular js :$q解决问题
- 由于Node的异步特性,需要帮助解决问题