2011-05-22 74 views
3

我有一个看起来像这样的列表:jQuery的隐藏/显示问题

<span id="contacts_tab_contacts_list_list"> 
       <li><span id="contact_35">John</span> 
       </li> 
       <li><span id="contact_36">Ron a</span> 
       </li> 
       <li><span id="contact_33">Ron b</span> 
       </li> 
       <li><span id="contact_34">35</span> 
       </li> 
       <li><span id="contact_39">33</span> 
       </li> 
       <li><span id="contact_37">66</span> 
       </li> 
       <li><span id="contact_38">77</span> 
... 
</span> 

我有一个<input>是我用jQuery过滤列表。 我尝试使用这两个jQuery行做到这一点:

$("#contacts_tab_contacts_list_list").children().hide(); 
$("#contacts_tab_contacts_list_list:contains('" + searchValue + "')").show(); 

因此,例如,键入Ron在搜索框中将contact_36contact_33在列表中唯一可见的元素。 hide()部分工作。 show()没有。

我在做什么错? (假设searchValue具有正确的值,在这种情况下为Ron

有没有更好的方法来做到这一点?

谢谢!

回答

5

尽量选择缩小到嵌套span元素:

$("#contacts_tab_contacts_list_list li span:contains('" + searchValue + "')").show(); 
+0

完美的作品! TNX!我也理解我的解决方案的问题 - 我显示了错误的对象。但是'contains'返回了哪些对象? – Ben 2011-05-22 11:37:13

+1

@Ben - 包含选择器一直只返回'#contacts_tab_contacts_list_list'元素:) – karim79 2011-05-22 11:38:40