2011-05-22 119 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