<p>
aaaaa
<div>bbbbb</div>
ccccc
<div>ddddd</div>
eeeee
</p>
如何能只取p标签里的文本也就是aaaaabbbbbccccc,
如果直接用jquery的text()方法会将div里的文本也取出来。
最好不要采用删除div标签的方式,也不要采用html()出来所有文本,再用正则去筛选。
谢谢!
首先在p里面嵌套div是不正确的做法。
你可以试试 $('p').length//2
因为浏览器会自动进行纠错如下(Chrome):
<p>
aaaaa
</p>
<div>bbbbb</div>
ccccc
<div>ddddd</div>
eeeee
<p></p>
另外aaaaa,eeeee建议用span或者p包含起来。直接的文字节点不符合语义的做法。而且在进行DOM处理时会增加一些工作,这里文字左右是不可见的换行符。最重要的是,jQuery中的选择器是不会选择文本节点的,只能使用contents+filter了,使用contents操作有性能有影响,慎用。
将p改成div时可以这样做:
<div id="el">
aaaaa
<div>bbbbb</div>
ccccc
<div>ddddd</div>
eeeee
</div>
全选复制放进笔记var $rs = $('#el').contents().filter(function() {
return this.nodeType === 3;
});
var text = $rs.text();
$('#el').after(text);//注意文字周围有换行符,需要再处理一下。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。