2015-09-07 3 views
1

у меня есть этот базовый код, который скрывает ближайший тр если .foo содержит строку:проверить, если DIV содержит текст из массива

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

, но пришло время, что «мля» не единственная строка I нужно проверить, я понимаю, что теперь мне нужно использовать массив, но не знаю, как это сделать.

Я взял дикое предположение и попробовал:

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

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

, но безрезультатно.

ответ

2

Вы близки, однако вам нужно также перебрать свой массив, чтобы проверить каждое значение.

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

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

Спасибо, помечаются как ответ, когда время позволяет. –

+0

@AnnaRiekic Удивительный, рад, что он сработал для вас :) – asdf

-1

Что-то вроде этого должно работать (хотя, вероятно, есть намного лучшие способы сделать это).

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

'val' должен быть в отдельных кавычках внутри селектора для' .foo: contains' для правильной работы. – asdf

+0

Вы правы, сэр. Ред. –

Смежные вопросы