[英]how to filter a multilevel menu with a search input
困難在於菜單具有多個級別(如matrix-admin中的菜單),並且每個級別都很大; 我應該如何過濾基於搜索輸入值的菜單。
和輸出應該是這樣的:( http://www.jqueryrain.com/?lEMFOjZ1 )和我的html是這樣的:
<ul>
<li>xxx</li>
<li>
<a>xxx</a>
<ul>
<li>
<a>xxx</a>
<ul>
<li>
<a>xxx</a>
<ul></ul>
</li>
</ul>
</li>
<li>xxxx</li>
</ul>
</li>
$("li").each(function () {
if (filter == "") {
$(this).css("visibility", "visible");
$(this).fadeIn();
} else if ($(this).text().search(new RegExp(filter, "i")) < 0) {
$(this).css("visibility", "hidden");
$(this).fadeOut();
} else {
$(this).css("visibility", "visible");
$(this).fadeIn();
}
});
Onkeypress
事件菜單將被過濾掉....父li
將是可見的,如果你試圖找到孩子li
...
您不需要jquery。
document.querySelector("#filter").addEventListener("keyup", function(e) {
var filter = this.value;
var count = 0;
document.querySelectorAll("li").forEach(function(li) {
if (filter == "") {
li.style["display"] = "list-item";
} else if (!li.textContent.match(filter)) {
li.style["display"] = "none";
} else {
li.style["display"] = "list-item";
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.