jQuery隐藏/显示问题

3

我有一个像这样的列表:

<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_36”和“contact_33”这两个元素可见。其中,“hide()”部分是有效的,而“show()”部分则无效。
请问我做错了什么?(假设“searchValue”已经被正确赋值为“Ron”)
是否有更好的方法来实现这个功能呢?
谢谢!
1个回答

5

试着将选择范围缩小到嵌套的 span 元素中:

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

运行完美!谢谢!我也明白我的解决方案存在的问题了 - 我显示的是错误的对象。但'contains'返回了哪些对象? - Ben
1
@Ben - 包含选择器只返回#contacts_tab_contacts_list_list元素 :) - karim79

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接