问题描述
例如,获取所有带有字母“ F”的元素,并将其放在元素数组中
解决方法
您可以使用:contains作为选择器。例如,要过滤还包含您的文本的特殊类的所有div,可以使用$(“ div.myclass:contains('searched text')”)
,我认为您可以通过迭代所有DOM项目来“蛮力”对待它。例如:
let arrayDom = Array.from(document.getElementsByTagName("*"));
arrayDom.forEach(element => {
if (element.innerHTML.contains('F')){
// Do something
}
})
,
一种相当简单的方法是选择您感兴趣的元素,然后使用“过滤器”查看innerText
。您可以使用toLowerCase
var result = $('div').filter( (i,e) => e.innerText.toLowerCase().indexOf("f")>-1);
console.log("Items with 'F':",result.length);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>Forest</div>
<div>Fortnight</div>
<div>Trees</div>
<div>Africa</div>
更简单的方法是使用:contains('F')
作为选择器-但这始终区分大小写(这可能适合您的情况)。
我强烈建议您将jQuery用于此类DOM元素搜索。 然后您可以使用:
var foos = $("div:contains('foo')" )
将创建一个数组,其中所有div都包含单词“ foo”。