在jquery中仅获取选定元素的文本,而不是其子元素的文本

在jquery中仅获取选定元素的文本,而不是其子元素的文本,jquery,Jquery,我有以下代码: $('p:not(:has(iframe))').filter(function(){ return $(this).text().length > 150;}) .slice(0,1).parent(); 根据文档,.text还获取子元素的文本,我想知道如何只选择所选元素的文本,而不选择其子元素。这不是最好的方法,但是。。。我想这会管用的 $('p:not(:has(iframe))').filter(function(){ var _cp =

我有以下代码:

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

根据文档,.text还获取子元素的文本,我想知道如何只选择所选元素的文本,而不选择其子元素。

这不是最好的方法,但是。。。我想这会管用的

$('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();

...

这符合你的需要吗

$('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();
$('p:not(:has(iframe))).filter(function(){
var总长度=0;
对于(var i=0;i 150;
}).slice(0,1).parent();
(这避免了在遍历DOM时需要克隆每个节点)