26

例如我们有这个文件

<div id="mydiv">
    some text here 
    <div id="inner div">
         text for inner div
    </div>
</div>

我只需要使用如下代码获取#mydiv文本:

alert($('#mydiv').text());  // will alert "some text here"
4

3 回答 3

51

嘿,请试试这个”:http: //jsfiddle.net/MtVxx/2/

此处针对您的具体案例的好链接:http: //viralpatel.net/blogs/jquery-get-text-element-without-child-element/(这只会获取元素的文本)

希望这可以帮助,:)

代码

jQuery.fn.justtext = function() {

    return $(this).clone()
            .children()
            .remove()
            .end()
            .text();

};

alert($('#mydiv').justtext());​
于 2012-07-06T12:26:18.577 回答
25

目前接受的答案在性能方面非常糟糕,所以我觉得有必要写一个更轻量级的答案:

$.fn.mytext = function() {
    var str = '';

    this.contents().each(function() {
        if (this.nodeType == 3) {
            str += this.textContent || this.innerText || '';
        }
    });

    return str;
};

console.log($('#mydiv').mytext());​
于 2013-12-31T04:26:23.067 回答
5

Ja͢ck 的回答一样,但不需要显式迭代(通过 .each())和收集textContents:

$('#mydiv').contents().filter(function(){return this.nodeType === 3}).text()

或者,如果您可以使用箭头函数:

$('#mydiv').contents().filter((i, el) => el.nodeType === 3).text()
于 2018-11-15T14:28:47.780 回答