簡體   English   中英

如何使用搜索輸入過濾多級菜單

[英]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";
    }
  });
});

https://jsfiddle.net/gfe9y5o2/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM