背景
HTML页面左侧有导航,右侧有正文。在导航中,有五个选项卡。正在使用ul
,并且每个垂直标签中都存在多个li
元素。每个垂直选项卡都有搜索框来过滤数据。
1)HTML代码
<h3>First</h3>
<div>
<input type="text" id="Searchtab1" />
<ul id="Firstul">
<li>Germany</li>
<li>France</li>
<li>Sydney</li>
</ul>
</div>
脚本代码
$("#Searchtab1").on("keyup click input", function () {
if (this.value.length > 0) {
$("#Firstul li").hide().filter(function () {
return $(this).text().toLowerCase().lastIndexOf($("#Searchtab1").val().toLowerCase(),0)== 0;
}).show();
}
else {
$("#Firstul li").show();
}
同样有五个垂直导航标签有类似的代码。现在问题是有一个要求在这些搜索之上有一个全局搜索框,即在HTML之上的一个搜索框将过滤所有导航选项卡。用户可以进一步筛选各个选项卡。基本过滤器工作正常,当我再次搜索单个导航时,它再次列出所有元素。基本上全局搜索优先于本地搜索,它应该能够处理用户在Globalsearch /本地搜索上进行任何更改时的情况,它应该通过考虑两个搜索选项(全局优先)来改变
这是我尝试过的 FiddleLink 有人可以建议如何纠正这个问题。
答案 0 :(得分:1)
试试这个: 为所有ul elems添加类(alluls)(或使用一些jquery选择器来选择它们)和:
$("#Searchtab1").on("keyup input", function () {
if (this.value.length > 0) {
$(".alluls").each(function(){
$(this).children().hide().filter(function () {
return $(this).text().toLowerCase().lastIndexOf($("#Searchtab1").val().toLowerCase(),0)== 0;
}).show();
});
}
else {
$(".alluls li").show();
}
修改:已移除点击事件
答案 1 :(得分:0)
您是否尝试过类似 JSFIDDLE 的内容? 链接:https://jsfiddle.net/umaar/t82gZ/
$(document).ready(function(){
$("#filter").keyup(function(){
// Retrieve the input field text and reset the count to zero
var filter = $(this).val(), count = 0;
// Loop through the comment list
$("nav ul li").each(function(){
// If the list item does not contain the text phrase fade it out
if ($(this).text().search(new RegExp(filter, "i")) < 0) {
$(this).fadeOut();
// Show the list item if the phrase matches and increase the count by 1
} else {
$(this).show();
count++;
}
});
// Update the count
var numberItems = count;
$("#filter-count").text("Number of Comments = "+count);
});
});
md-select .mat-select-underline{
display:none;
}
当然,这不是你的确切答案,只为你而制作!但我创造了那个小提琴,也许它可以帮助你!如果你想要一个不同的小提琴,请看上面的答案! (EchoSin&#39; S)
$("#Searchtab1").on("keyup input", function () { if (this.value.length > 0) { $(".alluls").each(function(){ $(this).children().hide().filter(function () { return $(this).text().toLowerCase().lastIndexOf($("#Searchtab1").val().toLowerCase(),0)== 0; }).show(); }); } else { $(".alluls li").show(); }