2011-04-18 57 views
0

我旁边HTML:jQuery的搜索多维UL列表

<input type="text" id="search" name="searchword" value="" /> 
<ul id="search_list"> 
    <li>first</li> 
    <li>second</li> 
    <li>third 
     <ul> 
      <li>aaa</li> 
      <li>bbbb 
       <ul> 
        <li>111111</li> 
        <li>22222</li> 
        <li>3333</li> 
       </ul> 
      </li> 
      <li>cccc</li> 
     </ul> 
    </li> 
</ul> 

而且我想通过输入来搜索这个列表。 我键入文本输入和<li><ul>的哪些不是搜索结果必须隐藏。

非常感谢你和对不起我的英语不好

+0

您是否试图编写代码来执行此操作?什么是示例搜索输入? – 2011-04-18 20:31:57

+0

让我们假设我输入“11”。 我这种情况下

  • 第一个
  • 第二个
  • 应该隐藏,因为它们不是搜索结果。 – Wizard4U 2011-04-18 20:33:37

    回答

    5

    使用KEYUP,模糊或当你想搜索和过滤发生改变依赖。

    $('#search').change(function() { 
        var searchTerms = $(this).val(); 
    
        $('li').each(function() { 
         var hasMatch = searchTerms.length == 0 || $(this).is(':contains(' + searchTerms + ')'); 
    
         $(this).toggle(hasMatch); 
        }); 
    }); 
    

    编辑:使解决方案稍微冗长,使其可以更容易阅读。

    这是fiddle

    +0

    优秀,永远不会说这很简单。 非常感谢。 – Wizard4U 2011-04-18 20:37:00

    +2

    +1:我建议在搜索框中添加一个没有回退的内容,例如'if(searchTerms.length == 0){$('li')。show();返回; }' – 2011-04-18 20:41:37

    +0

    好主意,因为我非常确定在搜索框中没有任何内容会使其失败。 – 2011-04-18 20:44:25