Get elements containing text from array

て烟熏妆下的殇ゞ 提交于 2020-01-07 04:39:07

问题


I want to search all the elements containing any string in the array. For example I have following list of items

<ul>
    <li>cricket bat</li>
    <li>tennis ball</li>
    <li>golf ball</li>
    <li>hockey stick</li>
</ul>

and this array

var arr = ['bat', 'ball'];

It should select all the elements having text bat and ball. How can I achieve this using jquery or javascript.

This is what I was trying

filter = 'bat ball';
var lis = row('UL li');
var flag = 0;
for (var i = 0; i < lis.length; i++) {
    var name = lis[i].getElementsByTagName('a')[0].innerHTML;
    if (name.toUpperCase().indexOf(filter) > -1) {
        flag = 1;
    } else {
        lis[i].style.display = 'none';
    }
}

回答1:


You can use :contains selector.

I think you meant either one of those values, in that case

var arr = ['bat', 'ball'];

var selectors = arr.map(function(val) {
  return ':contains(' + val + ')'
});
var $lis = $('ul li').filter(selectors.join());

$lis.css('color', 'red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
  <li>cricket bat</li>
  <li>tennis ball</li>
  <li>golf ball</li>
  <li>hockey stick</li>
</ul>



回答2:


You can use :contains pseudo-selector:

Select all elements that contain the specified text.

$('li:contains("bat"), li:contains("ball")')

DEMO




回答3:


Try this:

$.each(["bat", "ball"], function (i,val) {
    if ($("ul li:contains(" + val + ")").length) {
        $("ul li:contains(" + val + ")").css('color', 'red')
    }
})

DEMO




回答4:


Try utilizing .filter(), .match()

var arr = ["bat", "ball"];

var res = Array.prototype.filter.call(document.querySelectorAll("li")
          , function(el, index) {
              return el.textContent.match(new RegExp(arr.join("|"))) !== null
          });
  
console.log(res);
<ul>
    <li>cricket bat</li>
    <li>tennis ball</li>
    <li>golf ball</li>
    <li>hockey stick</li>
</ul>


来源:https://stackoverflow.com/questions/30972778/get-elements-containing-text-from-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!