如何在元素中获取最近的文本?

时间:2014-04-14 11:35:01

标签: jquery html text

$("#item_1")。text()将返回#item_1下的所有文字,但我只需要"第一项"。

是否可以获得文字"第一项"通过使用jquery?

<ul>    
    <li id="item_1">
        The First Item
        <ul class="ltUndertema _khKonteringUndertemaer mt2">
            <li>Item 1.1</li>
            <li>Item 1.2</li>
        </ul>
    <li>...</li>
    <li>...</li>
</ul>

4 个答案:

答案 0 :(得分:3)

我建议:

var text = $.trim($('#item_1').contents().filter(function(){
    return this.nodeType === 3;
}).text());

JS Fiddle demo

或者:

var text = $('#item_1').map(function(){
    return $.trim(this.firstChild.nodeValue);
}).get().toString();

JS Fiddle demo

没有jQuery:

var text = document.querySelector('#item_1').firstChild.nodeValue.trim();

JS Fiddle demo

参考文献:

答案 1 :(得分:2)

使用contents()并找到第一个文本节点:

$("#item_1").contents().filter(function() {
    return this.nodeType === 3;
}).first();

或者,如果你知道它将成为该节点中的第一个元素,那么只需数组中的第一个元素:

var text = $("#item_1").contents()[0];

jsFiddle

答案 2 :(得分:1)

您可以使用普通的旧版JavaScript执行此操作:

document.getElementById('item_1').childNodes[0].nodeValue;

Fiddle

答案 3 :(得分:0)

另一种选择:

$('#item_1').clone().find('*').remove().end().text()

虽然这会发现所有文本都不在子元素中,而不仅仅是第一个。看到它在this fiddle

中工作