开发者社区> 问答> 正文

jquery 获取直接下级的text

<p>
aaaaa
<div>bbbbb</div>
ccccc
<div>ddddd</div>
eeeee
</p>

如何能只取p标签里的文本也就是aaaaabbbbbccccc,
如果直接用jquery的text()方法会将div里的文本也取出来。
最好不要采用删除div标签的方式,也不要采用html()出来所有文本,再用正则去筛选。
谢谢!

展开
收起
小旋风柴进 2016-03-23 15:11:36 2214 0
1 条回答
写回答
取消 提交回答
  • 首先在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);​//注意文字周围有换行符,需要再处理一下。
    2019-07-17 19:11:13
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
Javascript中的对象 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载