jquery - 如何显示前 n 个元素,然后展开以显示剩余元素?

标签 jquery jquery-ui

我有一个元素列表(假设有 10 个),并且在页面加载时仅显示前 4 个。
单击更多将展开列表并显示剩余元素。

我的 html 代码如下所示:

  <div id="sales">
    <div class="listContainer">
        <ul>
          <li>1</li>
          <li>2</li>
          <li>n</li>
          <li>10</li>
        </ul>
    </div>
    <div class="expandSalesList">More</div>
  </div>

更新

这是我当前的代码:

jQuery('#sales li:gt(4)').hide();

jQuery('#sales .expandSalesList').live('click',function() {
    jQuery('#sales li').not(':visible').animate({height: 'toggle'}, 500, function() {});
});

如何使列表在下次点击时向上滑动?

我猜它一定是这样的:

jQuery('#sales .expandSalesList').live('click',function() {
    jQuery('#sales li:lt(4)').animate({height: 'toggle'}, 500, function() {});
});

更新2

我在你们的帮助下找到了答案:)

jQuery('#sales .expandSalesList').live('click',function() {
    jQuery('#sales li:gt(4):visible').animate({height: 'toggle'}, 600, function() {}); // This line MUST come before next line.
    jQuery('#sales li').not(':visible').animate({height: 'toggle'}, 500, function() {});
});

最佳答案

显示所有尚未可见的人:)

jQuery('#sales li:lt(4)').show();

jQuery('#sales .expandSalesList').live('click',function() {
    jQuery('#sales li').not(':visible').slideDown();
});

但是最好隐藏所有“li高于4”而不是显示它们,这样没有JS的人也可以看到结果。

像这样:

jQuery('#sales li:gt(4)').hide();

jQuery('#sales .expandSalesList').live('click',function() {
    jQuery('#sales li').not(':visible').each( function() {

        jQuery(this).slideDown();

    });
});

关于jquery - 如何显示前 n 个元素,然后展开以显示剩余元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914589/

相关文章:

jquery - 如何在不再触发其悬停事件时隐藏此导航菜单?

jquery - MVC3 - 如何维护回发时的选项卡索引

javascript - 自定义 jquery 移动 slider 标签

javascript - 有没有办法触发mousemove并获取event.pageX,event.pageY?

javascript - 将选择选项附加到文本字段

javascript - 当 div 粘在底部时正文隐藏

javascript - 如果 href 与变量匹配,则将类添加到菜单 li

javascript - jQuery 突出显示不适用于 Bootstrap v4 按钮

jquery-ui - 按年份分组的传单 slider

jQuery Draggable 在拖动时获取负位置值