如何在jQuery中查找所有具有内部文本的元素

如何在jQuery中查找所有具有内部文本的元素,jquery,Jquery,查找包含内部文本的所有元素的jquery是什么 $(“*:contains(*))似乎是错的…什么是“内部文本”?你想做这样的事吗 var elems = []; $('*').each(function(){ if ($(this).text().length > 0) { elems.push($(this)); } }); console.log('Elements with text: ' + elems.length); console.log(

查找包含内部文本的所有元素的jquery是什么

$(“*:contains(*))
似乎是错的…

什么是“内部文本”?你想做这样的事吗

var elems = [];
$('*').each(function(){
    if ($(this).text().length > 0) {
        elems.push($(this));
    }
});

console.log('Elements with text: ' + elems.length);
console.log('All elements with text:' + elems);
$。过滤器(“*”
将执行您正在查找的操作

使用
innerHTML
的示例:

$(document.getElementById("elementID").innerHTML).filter("*");
如果将“内部文本”定义为具有文本节点,我认为这将满足您的需要:


你试过找到文档的所有文本节点并找到它们的父节点了吗?@DavidThomas-嗯,请提供一些代码。如果你真的需要找到包含一些文本的所有元素,你可能做错了什么,因为这不是通常非常有用的东西,使用asterix选择器应该会让大多数人感到有点冷,因为它在较大的文档上可能非常昂贵。我正在编写一个扩展,它可以检测汉字并将文本转换为顶部带有拼音的ruby元素。哦,对不起,语法错误,在瑞典已经很晚了:)如果只有正文中的元素,请使用“body>*”像这样没问题,你也可以使用“body*”,这将贯穿每个孩子,而不仅仅是“top”。这很有趣。它给了我很多不应该的标签,比如脚本、样式和标题。将上下文从“*”更改为“body”并没有检测到任何div、p等。@robertotomás
$('body')
仅选择一个元素,请尝试
$('body*)
如果您是对的,您的解决方案会更优雅。另一个也可以,这是第一个。老实说,如果我在执行上没有问题,我会给你信用,而不是让你检查小提琴。。。对不起,巴德,如果可以的话,我也会相信你的
var $elementsWithTextNodes = $('*').filter(function(){
    return $(this).contents().filter(function() {
       return this.nodeType == 3 && $.trim($(this).text()) != ''; 
    }).length;
});