javascript - 隐藏/显示第 n 项后的列表

标签 javascript jquery

我有两个列表:

<div class="list">
    <ul>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
        <li>Four</li>
        <li>Five</li>
    </ul>
<a href="#" class="btn-more"><img src="../img/more.png"></a>
</div>

<div class="list">
    <ul>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
        <li>Four</li>
        <li>Five</li>
    </ul>
<a href="#" class="btn-more"><img src="../img/more.png"></a>
</div>

我想展示前三项。当我点击 .btn-more

时显示/隐藏(切换)其他项目

我尝试使用动态数字:

$('.list ul').each(function(){
    var max = 2;

    if ($(this).find("li").length > max) {
        $(this).find('li:gt('+max+')').hide()
    }
});

这是可行的,但我不知道在哪里添加按钮的代码以显示/隐藏其他项目。

最佳答案

我会使用 CSS 来完成此操作,然后使用 jquery 切换一个类(控制显示/隐藏)

$('.list .btn-more').on('click',function(e) {
    e.preventDefault();
    $(this).closest('.list').toggleClass('open');
});
.list li:nth-child(n+3){display:none;}
.list.open li:nth-child(n+3){display:list-item;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="list">
  <ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    <li>Five</li>
  </ul>
  <a href="#" class="btn-more">
    <img src="../img/more.png">
  </a>
</div>

<div class="list">
  <ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    <li>Five</li>
  </ul>
  <a href="#" class="btn-more">
    <img src="../img/more.png">
  </a>
</div>

关于javascript - 隐藏/显示第 n 项后的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41388488/

相关文章:

javascript - 如何将单独的 onclick/EventListener 函数添加到每行 PHP 生成的内容中?

javascript - Chrome 扩展程序弹出窗口中的文件输入

javascript - 单击特定复选框时取消选中除一个复选框之外的所有复选框

c# - 来自 c# DateTime 的 Javascript 日期

javascript - jquery调整窗口大小以适应内容

javascript - 使用 setInterval 将状态增加 1 除非当前状态匹配或大于最大值

javascript - ajax成功后无法删除表行

javascript - 如果替换路径中的最后一个元素,React Router v6 useNavigate() 不会导航

jquery - 如何使用 jQuery 正确地将备用类添加到具有相同类的多个表上的甚至表行?

javascript - 选择三个具有属性值的div