检查div是否包含数组中的文本

时间:2015-09-07 23:54:30

标签: jquery arrays

我有这个基本代码,如果.foo包含一个字符串,它会隐藏最近的tr:

$('.foo:contains("blah")').each(function() {
  $(this).closest('tr').hide();
 });

但现在是时候了,“blah”并不是我需要检查的唯一字符串,我意识到我现在需要使用数组但不确定如何。

我疯狂猜测并尝试:

var arr = ['blah', 'foo', 'bar'];

$('.foo:contains("+arr[]+")').each(function() {
      $(this).closest('tr').hide();
     });

但无济于事。

3 个答案:

答案 0 :(得分:3)

您已关闭,但您还需要遍历数组以检查每个值。

var arr = ['blah', 'foo', 'bar'];

var i=0;
for (; i<arr.length; i++) {
    $(".foo:contains('"+arr[i]+"')").each(function() {
         $(this).closest("tr").hide();
    });
}

答案 1 :(得分:2)

var arr = ['blah', 'foo', 'bar'];

$('.foo').each(function() {
    if($.inArray($(this).text(),arr)!==-1 ) {
      $(this).closest('tr').hide();
    }
     });

https://api.jquery.com/jQuery.inArray/

或者,使用filter():http://api.jquery.com/filter/

$( ".foo" )
  .filter(function( ) {
    return $.inArray($(this).text(),arr)!==-1;
  }).closest('tr').hide();

答案 2 :(得分:-1)

这样的事情应该有效(尽管可能有更好的方法)。

var arr = ["John", "Jane", "Mike", "Ted"];
arr.forEach(function(val){
   $(".foo:contains('" + val + "')").each(function(){
       $(this).closest('tr').hide();
   });
});