搜索

首页  >  问答  >  正文

javascript - jquery如何获取标签本生的文本内容,不获取本身子级元素及子级元素的内容

代码如下
html:

<p>
    <p>内容<span>我不获取的内容</span>内容</p>
</p>

js:

var content = $("p p").text();
var content = $("p p").html();

实现效果:以上两种方法text(),html()都要把span标签内的文本获取出来,而现在我想获取p标签下的“内容”,不包括p标签下的span标签下的内容,即 我需要让content = "内容内容"、而不是content = "内容<span>我不获取的内容</span>内容内容",也不是content = "内容我不获取的内容内容内容"

高洛峰高洛峰2813 天前1074

全部回复(5)我来回复

  • 迷茫

    迷茫2017-04-10 16:04:58

    经测试通过的代码:

    var obj = $("p").children("p").clone();
    obj.find(':nth-child(n)').remove();
    console.log(obj.html());
    

    因为我也遇到同楼主一样的需求,于是搜到此处,结合 @里沃特 和 @TinTinSH 二者的答案分析及实战得出上述结果,不破坏原文档并能实现效果;
    当然该问题时间有点长,可能楼主等都已解决该问题,我此次回答并有日后他人解惑之目的!

    回复
    0
  • 高洛峰

    高洛峰2017-04-10 16:04:58

    var obj = $($("p").html());
    obj.find("span").remove();
    alert(obj.html());
    

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:04:58

    提供另一种思路:用正则替换

    var content = $("p p").html();
    var res=content.replace(/(.*)<[^>]*>.*<\/[^>]*>(.*)/,"$1$2");

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-10 16:04:58

    var str = $('p p').contents().filter(function (index, content) {
        return content.nodeType === 3;
    }).text();

    回复
    0
  • 高洛峰

    高洛峰2017-04-10 16:04:58

    改了下第一个的答案,
    var obj = $("p").clone().find(':nth-child(n)').remove();
    alert(obj.html());
    试试

    回复
    0
  • 取消回复