javascript – 用div排除文本,排除所有孩子
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 用div排除文本,排除所有孩子,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1721字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 用div排除文本,排除所有孩子](/upload/InfoBanner/zyjiaocheng/750/b03833d151bc43628f0415ab5df728d2.jpg)
我有一个问题,我过去2天一直试图解决,但无法解决.
问题:
我有一个HTML作为
<div class="string-box">
Text 1 wrap me
<span class="inner-span">Don't search me</span>
<span class="inner-span">Identical text</span>
Identical text
substring match
<span class="inner-span">Don't search substring match</span>
<br>
Finally wrap me
</div>
我想将内容包装在下面
<div class="string-box">
<span> Text 1 wrap me </span>
<span class="inner-span">Don't search me</span>
<span class="inner-span">Identical text</span>
<span>Identical text</span>
<span>substring match</span>
<span class="inner-span">Don't search substring match</span>
<br>
<span>Finally wrap me</span>
</div>
我试过了什么
a)我首先尝试在html中搜索字符串并使用字符串替换来用包裹的字符串替换字符串.
这种方法的问题在于它也取代了孩子的东西……
b)我尝试克隆节点并删除所有子节点,但后来我丢失了字符串的位置.
c)我尝试使用以下代码替换textNode,但最终得到了HTML
$('.string-box').contents().filter(function(){
return this.nodeType == 3;
}).each(function(){
this.nodeValue = '<span>'+this.nodeValue+'</span>';
})
在此先感谢您的时间和救命..
解决方法:
您的代码很接近,但是nodeValue不能包含HTML – 因此它会在您的尝试中被编码.相反,您可以在HTML中包装()textNode,如下所示:
$('.string-box').contents().filter(function() {
return this.nodeType == 3;
}).each(function() {
$(this).wrap('<span />');
})
更新
这是针对nodeValue包含换行符并且您希望将节点的每一行包装在其自己的span中的情况的修复:
$('.string-box').contents().filter(function() {
return this.nodeType == 3 && this.nodeValue.trim();
}).each(function() {
var $spans = this.nodeValue.trim().split(/\r?\n/).map(function(i, v) {
return $('<span />', { text: i + ' ' });
});
$(this).replaceWith($spans);
})
内容总结
以上是互联网集市为您收集整理的javascript – 用div排除文本,排除所有孩子全部内容,希望文章能够帮你解决javascript – 用div排除文本,排除所有孩子所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。