Jquery选择器做text()但没有class或id?

时间:2016-06-20 09:57:02

标签: javascript jquery

<h1>
    <br>
    USA
    <br>
    <br>
    <p style="margin-top:13px;" class="glyphicon glyphicon-chevron-down"></p>
    <br>
    <br>
    Canada 
</h1>

如果不更改上面的HTML,如何使用jQuery选择器获取Canada的值?

5 个答案:

答案 0 :(得分:3)

如果要获取最后一个文本节点值,请尝试此

var h1 = document.querySelector("h1");
var childNodes = h1.childNodes;
console.log(childNodes[childNodes.length -1 ].nodeValue);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1><br>USA<br><br><p style="margin-top:13px;" class="glyphicon glyphicon-chevron-down"></p><br><br>Canada </h1>

等效的jquery将是

var h1 = $("h1")[0];

答案 1 :(得分:1)

如果标记样式一致 - 不容易更改,则可以使用xpath

https://developer.mozilla.org/en-US/docs/Web/XPath

答案 2 :(得分:1)

您也可以这样做:

var value = $('h1').contents().filter(function() {
    return this.nodeType == 3;
})[1];

这里我使用nodeType == 3来选择文本节点。

https://jsfiddle.net/54tw4nw0/

答案 3 :(得分:1)

你走了:

var afterP;

var text = $('h1').contents().filter(function() {
    if (this.nodeName == "P") {
        afterP = true
    }

    return afterP && this.nodeType == 3;
}).text();

console.log(text);

已复制解决方案&amp;从Get the text after span element using jquery

增强

答案 4 :(得分:0)

尝试:

var text = $("h1").html();
alert(text.substring(text.lastIndexOf("<br>") +4));

Working Fiddle