只获取所选元素的文本而不是jquery中的后代

时间:2011-08-06 02:16:16

标签: jquery

我有这段代码:

$('p:not(:has(iframe))').filter(function(){
    return $(this).text().length > 150;})
    .slice(0,1).parent();

根据文档,.text也获得了后代的文本,我想知道如何只选择所选元素的文本,而不是它的后代。

2 个答案:

答案 0 :(得分:2)

这不是最好的方式,但......我认为它会起作用。

$('p:not(:has(iframe))').filter(function(){
    var _cp = $(this).clone();
    var tiw = _cp.children().remove().end().text();

    return tiw.length > 150;
}).slice(0,1).parent();

...

答案 1 :(得分:0)

这是否符合您的需要?

$('p:not(:has(iframe))').filter(function(){
    var total_length = 0;
    for (var i=0; i<this.childNodes.length; ++i)
        if (this.childNodes[i] instanceof Text)
            total_length += this.childNodes[i].length;

    return total_length > 150;
}).slice(0,1).parent();

(这样可以避免在遍历DOM时克隆每个节点)