循环遍历html元素并检查文本是否包含特定单词

时间:2017-07-11 22:37:28

标签: javascript jquery html

我想遍历一个html元素列表,只记录包含特定单词的控制台。

const li = $('ul li');
for (let i = 0; i < li.length; i++) {
  //If any of the li's  match with a specific word. 'Item A' for example then log it to the console.
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<div>
  <ul>
    <li>Item A</li>
    <li>Item B</li>
    <li>Item C</li>
  </ul>
</div>

4 个答案:

答案 0 :(得分:1)

可以使用jQuery :contains选择器:

$('ul li:contains(A)').each((_,el) => console.log(el.id))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<div>
  <ul>
    <li id="li-A">Item A</li>
    <li id="li-B">Item B</li>
    <li id="li-C">Item C</li>
  </ul>
</div>

答案 1 :(得分:1)

我会将$.each()用于此

&#13;
&#13;
$.each($('ul li'), function(){
	if($(this).text().toLowerCase() === "item a"){
    	console.log($(this).text())
    }
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <ul>
    <li>Item A</li>
    <li>Item B</li>
    <li>Item C</li>
  </ul>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

const li = $('ul li');
for (let i = 0; i < li.length; i++) {
  if(li[i].innerText === 'Desired String') {
  //do something
}

}

答案 3 :(得分:0)

这个简单的任务不需要像jquery这样的库。您可以使用过滤器进行过滤,并且可以对正则表达式使用匹配。使用es6,您可以获得简洁的语法,并且使用vanilla可以获得性能。其他一切都是抽象的。

let elements = document.getElementsByTagName('ul')[0].children;
let arr = Array.from(elements, node => node.innerText);
arr = arr.filter(items => items.match('A'));
console.log(...arr);
<div>
  <ul>
    <li>Item A</li>
    <li>Item B</li>
    <li>Item C</li>
  </ul>
</div>