Я пытаюсь скрыть $("#shop-subcategories-menu")
, когда во входе #filter есть что-то (текст), и переключать его обратно, когда он пуст.
Я не могу понять, почему console.log(true)
срабатывает и возвращает истину, но
$("#shop-subcategories-menu").toggle(true);
не стреляет.
Если я напишу $("#shop-subcategories-menu").toggle(true);
прямо в консоль, div снова станет видимым.
Я явно что-то упускаю, но не могу понять, что, пожалуйста, помогите.
Короче говоря: как сделать переключатель <div id="shop-subcategories-menu">TEST</div>
видимым, когда <input id="filter" type="text" placeholder="Search..">
пуст ?? ??
$(document).ready(function(){
$(document).on('keyup', '#filter', function (e) {
if ($(this).val() === '') {
console.log(true);
$("#shop-subcategories-menu").toggle(true);
}
var value = $(this).val().toLowerCase();
$("#myTable tr").filter(function () {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
$("#shop-subcategories-menu").toggle(false);
});
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>
<div id="shop-subcategories-menu">TEST</div>
<p>Type something in the input field to search the table for first names, last names or emails:</p>
<input id="filter" type="text" placeholder="Search..">
<br><br>
<table>
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td>John</td>
<td>Doe</td>
<td>john@example.com</td>
</tr>
<tr>
<td>Mary</td>
<td>Moe</td>
<td>mary@mail.com</td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>july@greatstuff.com</td>
</tr>
<tr>
<td>Anja</td>
<td>Ravendale</td>
<td>a_r@test.com</td>
</tr>
</tbody>
</table>
</body>
</html>