通过包含的单词获取元素

问题描述

有没有一种方法可以通过内容(包含的单词)获取元素

例如,获取所有带有字母“ 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”。