jQuery 隐藏了所有 <li> 标签

Posted

技术标签:

【中文标题】jQuery 隐藏了所有 <li> 标签【英文标题】:jQuery is hiding all <li> tags 【发布时间】:2015-02-27 19:43:22 【问题描述】:

遇到一些 jQuery 问题,因为我对它还很陌生,我有一些 jQuery 代码隐藏了 &lt;li&gt; 项目的过滤器菜单。但是,当我使用它时,它还会隐藏我在主菜单标题中使用的&lt;li&gt; 标签。

我正在考虑为 &lt;li&gt; 分配一个特定的类名以隐藏,但他们已经在使用特定的名称。 (如会计、快递等)

如何仅隐藏特定的&lt;li&gt; 标签而不隐藏主菜单标题中的标签? 我可以为要隐藏的&lt;li&gt;s 分配不同的标识符吗?

要隐藏的 li 的 HTML 代码:

<div class="tags">
<div id="col">
    <label>
        <input type="checkbox" rel="accounting" />Accounting</label>
</div>
<div id="col">
    <label>
        <input type="checkbox" rel="courier" />Courier</label>
</div>
<div id="col">
    <label>
        <input type="checkbox" rel="project-management" />Project Management</label>
</div>
<div id="col">
    <label>
        <input type="checkbox" rel="video-games" />Video Games</label>
</div>
</div>

<ul class="results">
<li class="accounting" style="list-style-type:none"><a href="http://cnn.com" style="text-decoration: none">Accounting</a>

</li>
<li class="courier" style="list-style-type:none"><a href=" path('job1') " style="text-decoration: none">Courier / Parcel Delivery</a>

</li>
<li class="project-management" style="list-style-type:none"><a href=" path('job3') " style="text-decoration: none">Game QA Project Management</a>

</li>
<li class="video-games" style="list-style-type:none"><a href="http://cnn.com" style="text-decoration: none">Video Games</a>

</li>
</ul>

jQuery 代码(隐藏所有 li 标签)

<script>
    $('div.tags').find('input:checkbox').on('click', function () 
        var vals = $('input:checkbox:checked').map(function () 
            return $(this).attr('rel');
        ).get();
        $('li').hide().filter(function () 
            return ($.inArray($(this).attr('class'), vals) > -1)
        ).show()
        if ($('input:checkbox:checked').length == 0) $('li').show()
    );
</script>

【问题讨论】:

【参考方案1】:

尝试将选择器改进得更具体,如下所示:

<script>
    $('div.tags').find('input:checkbox').on('click', function () 
        var vals = $('input:checkbox:checked').map(function () 
            return $(this).attr('rel');
        ).get();
        $('.results li').hide().filter(function () 
            return ($.inArray($(this).attr('class'), vals) > -1)
        ).show()
        if ($('input:checkbox:checked').length == 0) $('.results li').show()
    );
</script>

$('li')$('.results li') 的更改将导致它只选择ul 中具有results 类的列表元素。

【讨论】:

完美!谢谢楼主! 没问题,很高兴能帮上忙!【参考方案2】:

您只需将jquery 选择器li 替换为您的container-class li,就像这样

.results li

LIVE DEMO

【讨论】:

以上是关于jQuery 隐藏了所有 <li> 标签的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 点击元素以外任意地方隐藏该元素

使用 jQuery 检查 mouseleave() 时光标在哪个元素上?

jquery 获取同胞元素中的最后一个

使用jquery获取指定li元素后面的所有兄弟元素

js jq 点击a标签 显示对应的div

day 55 jQuery-part2