难点在于菜单有很多级别(比如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>
答案 0 :(得分:3)
$("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
...
答案 1 :(得分:1)
你不需要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";
}
});
});