消息关闭
    暂无新消息!
<div class="mui-media-body js-media-body js-anviz-body">Trouble Ticket
    <p class="anviz-ellipsis js-des">You can sumbit your trouble and …</p>
</div>

仅要获取 Trouble Ticket 怎么写?谢谢


8个回答

︿ 1

题主的问题理解起来应该是想获取属于父元素但不属于子元素的所有文本吧

  • 假设知道文本位置,那就简单些,如果文本在一开始:

//pp = """<div class="mui-media-body js-media-body js-anviz-body">Trouble Ticket
    <p class="anviz-ellipsis js-des">You can sumbit your trouble and …</p>
</div>"""
var childNodes = pp.childNodes;
var text = childNodes[0]; // Trouble Ticket
  • 如果文本位置不确定,甚至有多个的时候,这个时候就要遍历父元素的儿子元素,寻找所有节点属性为文本的元素:

//pp = """<div class="mui-media-body js-media-body js-anviz-body">
    Trouble Ticket
    <p class="anviz-ellipsis js-des">You can sumbit your trouble and …</p>
    Trouble Ticket2
</div>"""
var childNodes = pp.childNodes;
var textNodes = [];
childNodes.forEach(function(node){
    if (node.nodeType === 3) {
        textNodes.push(node);
    } // 3 为 文本
});
//textNodes === ['Trouble Ticket', 'Trouble Ticket2']
︿ 1
<html>
    <head>
        <title></title>
        <style type="text/css">
            .parent{
                width:100px;
                height:100px;
            }
            .child{
                width:100px;
                height:50px;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            hello world,
            <div class="child">welcome!</div>
        </div>
        <script>
            var text = document.querySelector('.parent').firstChild.nodeValue;
            console.log(text);
        </script>
    </body>
</html>

︿ 1

上面clone的方法好一点,万一p标签后面还有文本呢?
用firstChild只取到了第一个文本节点,还要遍历才能取到后面的文本节点。

︿ 0

先clone 元素,然后移除子元素,最后获取的是不包含子元素的文本

jQuery('.js-anviz-body').clone().children().remove().end().text()