javascript - 在 sidenav 搜索菜单中的用户搜索期间删除中断链接
问题描述
所以在我的网站上,我有一个侧边导航菜单,可以分解我使用的部分<br>
,但问题是当您开始搜索时,断开链接会在您搜索时将结果一直向下推,我需要帮助来确定只有在菜单中搜索某些内容时才能删除这些内容。
<input type="text" id="navbar-search" placeholder="Search Menu" onkeyup="filterFunction()" autocomplete="on" autofocus>
<ul id="sidenavList">
<li><a class="not-allowed" disabled>Section Title</a></li>
<li><a href="#">Agnes</a></li>
<li><a href="#">Anthony</a></li>
<li><a href="#">Amira</a></li>
<br> <!-- I want these <br> to remove during search inquiry -->
<li><a class="not-allowed" disabled>Section Title</a></li>
<li><a href="#">Bob</a></li>
<li><a href="#">Brock</a></li>
<li><a href="#">Bryan</a></li>
<br> <!-- I want these <br> to remove during search inquiry -->
<li><a class="not-allowed" disabled>Section Title</a></li>
<li><a href="#">Christina</a></li>
<li><a href="#">Callie</a></li>
<li><a href="#">Cindy</a></li>
</ul>
<script>
function filterFunction() {
var input, filter, ul, li, a, i, txtValue;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
ul = document.getElementById("sidenavList");
li = ul.getElementsByTagName("li");
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
</script>
解决方案
我将 jQuery 添加到您的代码中并使用<div>
而不是<br>
.
function filterFunction() {
val = $('#navbar-search').val().toLowerCase();
$('#sidenavList li').filter(function(){
$(this).toggle($(this).text().toLowerCase().indexOf(val) > -1)
})
if (val != '') {
$('.not-allowed').parent().hide()
$('.divider').hide()
} else {
$('.not-allowed').parent().show()
$('.divider').show()
}
}
.divider {
opacity: 0
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="navbar-search" placeholder="Search Menu" onkeyup="filterFunction()" autocomplete="on" autofocus>
<ul id="sidenavList">
<li><a class="not-allowed" disabled>Section Title</a></li>
<li><a href="#">Agnes</a></li>
<li><a href="#">Anthony</a></li>
<li><a href="#">Amira</a></li>
<div class="divider">Here is the line break</div>
<li><a class="not-allowed" disabled>Section Title</a></li>
<li><a href="#">Bob</a></li>
<li><a href="#">Brock</a></li>
<li><a href="#">Bryan</a></li>
<div class="divider">Here is the line break</div>
<li><a class="not-allowed" disabled>Section Title</a></li>
<li><a href="#">Christina</a></li>
<li><a href="#">Callie</a></li>
<li><a href="#">Cindy</a></li>
</ul>
我希望这就是你要找的。
推荐阅读
- codeigniter - PhpOffice Spredsheet 超过 30k 数据文件损坏
- java - 找不到符号类 ImplementAndroidArchitecture
- csv - 清理此 CSV
- firebase - Flutter:没有创建 Firebase 应用程序“[DEFAULT]”-调用 Firebase.initializeApp()
- reactjs - React 网络摄像头使用 redux--problem 预览捕获的图像“base64”
- javascript - Javascript 图像加载方法 - 捕获错误
- android - 我应该在 FirebaseMessagingService 的 onMessageReceived() 中使用协程吗?
- php - 在 php 网站上显示 onedrive 图像预览
- sql - 如何使查询更短、更整洁?
- javascript - HTML DOM:为什么在事件委托期间某些事件没有冒泡