Весь ваш код работает нормально, проблема возникает только в строке if (!index) return;
,
index
возвращает числа [0,1,2,3 ...] в$.each()
, поэтому, когда была достигнута первая строка, индекс был 0
, а !0 = 1
, таким образом, условие , если было выполнено и возвращено без удаления первой строки.
$("#search").keyup(function () {
var value = this.value.toLowerCase().trim();
$("table tr").each(function (index) {
$(this).find("td").each(function () {
var id = $(this).text().toLowerCase().trim();
var not_found = (id.indexOf(value) == -1);
$(this).closest('tr').toggle(!not_found);
return not_found;
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<table>
<tr>
<td class="col-nome">Ixpira</td>
<td><span class="badge badge-success">Live</span></td>
</tr>
<tr>
<td class="col-nome">SunHotels</td>
<td><span class="badge badge-success">Live</span></td>
</tr>
<tr>
<td class="col-nome">World 2 Meet [W2M]</td>
<td><span class="badge badge-success">Live</span></td>
</tr>
<tr>
<td class="col-nome">ImperatoreTravel.it</td>
<td><span class="badge badge-success">Live</span></td>
</tr>
</table>
<br />
<input type="text" id="search" placeholder=" live search"></input>