Во-первых, я исправил небольшую ошибку с HTML, где ваши strong
теги не были правильно завершены. Кроме того, я удалил проверку для первой строки, поскольку это означало, что Face
всегда будет отображаться независимо от значения поиска.
Для решения этой проблемы я использую логическую переменную shouldShow
для укажите, должна ли отображаться текущая строка.
Код выполняет итерацию по строкам таблицы, как и ранее, и затем проверяет, содержит ли текущая строка тег strong
. Если это так, он определяет, соответствует ли это тому, что ищется, и устанавливает shouldShow
соответствующим образом.
shouldShow
затем используется для определения, показывать или скрывать строку. Смотрите рабочий фрагмент ниже:
jQuery(".zoekopcat").on("keyup", function() {
var value = jQuery(this).val();
var shouldShow = false;
jQuery("table tr").each(function(index) {
row = jQuery(this);
if (row.find("strong").length) {
var id = row.find("strong:contains(" + value + ")").text();
if (id.indexOf(value) !== -1) {
shouldShow = true;
} else {
shouldShow = false;
}
}
if (shouldShow) {
row.show();
} else {
row.hide();
}
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="zoekopcat">
<table>
<tr>
<td colspan=7><strong>Face</strong></td>
</tr>
<tr>
<td>Product1</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>Product2</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td colspan=7><strong>Hands</strong></td>
</tr>
<tr>
<td>Product1</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>Product2</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</table>