jQuery 显示带有更多和更少链接的第一个 X 元素

Posted

技术标签:

【中文标题】jQuery 显示带有更多和更少链接的第一个 X 元素【英文标题】:jQuery show first X elements with More and Less links 【发布时间】:2012-06-19 20:20:18 【问题描述】:

我正在尝试找到一个 jQuery 解决方案,以在左侧导航过滤器中显示每个菜单上的前 3 个项目,并带有“显示更多”和“显示更少”链接,使用户能够展开列表。

我已经搜索了解决方案,但大多数展开/折叠脚本完全隐藏图层,而其他脚本显示展开(显示更多)链接,但不切换以显示折叠(显示更少)链接。

我的菜单编码如下。

<div id="menu1">
<ul class="term-list">
<li class="term-item ">Item 1</li>
<li class="term-item ">Item 2</li>
<li class="term-item ">Item 3</li>
<li class="term-item ">Item 4</li>
</ul>
</div>
<div id="menu2">
<ul class="term-list">
<li class="term-item ">Item 1</li>
<li class="term-item ">Item 2</li>
<li class="term-item ">Item 3</li>
<li class="term-item ">Item 4</li>
</ul>
</div>

【问题讨论】:

How can I display first n elements, then expand to show remaining elements? 的可能重复项 【参考方案1】:

jsBin demo

这里只是一个基本的例子:

$('ul.term-list').each(function()
  
  var LiN = $(this).find('li').length;
  
  if( LiN > 3)    
    $('li', this).eq(2).nextAll().hide().addClass('toggleable');
    $(this).append('<li class="more">More...</li>');    
  
  
);


$('ul.term-list').on('click','.more', function()
  
  if( $(this).hasClass('less') )    
    $(this).text('More...').removeClass('less');    
  else
    $(this).text('Less...').addClass('less'); 
  
  
  $(this).siblings('li.toggleable').slideToggle();
    
); 

或者更多compact version

【讨论】:

哈哈,我正要发表评论,对您的代码进行更改,以启用更少的文本并向后滑动,但看到了编辑。哦,好吧,无论如何:jsbin.com/oyepoz【参考方案2】:

演示:http://jsfiddle.net/DQKyT/

$(function()
    /* add button, hide extra items*/      
    $('.term-list').each(function() 
        var $list = $(this);
        $list.before('<button class="more_less">More</button>')
       $list.find('.term-item:gt(2)').hide();
    );

    /* button click handler*/
    $('.more_less').click(function() 
        var $btn = $(this)
        $btn.next().find('.term-item:gt(2)').slideToggle();    
        $btn.text($btn.text() == 'More' ? 'Less' : 'More');   
    );
)

【讨论】:

如何在列表之后而不是之前使用 more_less 按钮?

以上是关于jQuery 显示带有更多和更少链接的第一个 X 元素的主要内容,如果未能解决你的问题,请参考以下文章

左连接在查询后返回更多和更少的行

带有 CSS 模块和更少的 Storybook UI

滑动切换 jQuery 函数

jQuery学习教程,写更少的代码,做更多的事情完

用链接截断 html 中的文本以显示更多/更少并将元素保留在里面

如果兄弟 div 中的行超过 n 行,则隐藏显示更多/更少 div