我有这段代码:
$('p:not(:has(iframe))').filter(function(){
return $(this).text().length > 150;})
.slice(0,1).parent();
根据文档,.text也获得了后代的文本,我想知道如何只选择所选元素的文本,而不是它的后代。
答案 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时克隆每个节点)