2013-12-06 4 views
1

Мне нужно скрыть все мои таблицы td, если они содержат только знак «%».Скрыть таблицу td, если содержит точное соответствие

У меня есть два типа результатов:

<td>%</td> 
<td>1%</td> 

Я хочу, чтобы скрыть все ТД, которые имеют только%. Те, у кого есть 1% или 2%, или любой другой номер infront%, должны оставаться видимыми.

Я сделал JS, но его пряча все ТД (я прекрасно понимаю, почему: потому что я использовал : содержит и если тд содержат%, то он будет скрыт):

if (jQuery('#results table tbody tr td:contains("%")').length > 0) { 
    jQuery("#results table tbody tr td").hide(); 
} 

мне нужно знать, как это сделать. Спасибо

+0

Ваш JQuery неправильно, и ваша идея, почему это неправильно тоже неправильно. Вы написали два совершенно разных селектора jQuery. Тот, что находится внутри 'if', не имеет ничего общего с условием' if'. Вы выбираете разные элементы одновременно. Внутри 'if' вам нужно ссылаться на результаты, найденные с помощью * first *' jQuery (...) ', путем их хранения в переменной или путем итерации по ним с помощью' each'/'filter'/etc. – meagar

ответ

4

Я хотел бы использовать .filter:

$("#results table tbody tr td").filter(function() { 
    return $(this).text() === "%"; 
}).parent().hide(); 

Вот является jsFiddle продемонстрировать.

+0

Я стою правильно, он возвращает объект jQuery. Это было бы лучшим решением. – meagar

+0

@Stan Просто поместите вызов '.parent()' перед '.hide()' – CodingIntrigue

+0

@RGraham Большое вам спасибо. Теперь он совершенен. – WPguy

3

Try с each как

$('#results table tbody tr td').each(function(){ 
    if($(this).text() == "%") { 
     $(this).hide(); 
    } 
}); 
-2

Попробуйте

$('#results table tbody tr td').each(function(){ 
    if($(this).text().indexOf('%')!=-1) 
    { 
     $(this).hide(); 
    } 
}); 
+2

Это скроет каждый '', который содержит '%' где-нибудь внутри него. Включая '% 1', который он не хочет скрывать. – meagar

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