如何显示前n个元素,然后展开以显示其余元素?
我有一个elemnts列表(让我们说10),我只在页面加载时显示前4。
单击more
将展开列表并显示剩余元素。
我的HTML代码如下所示:
- 1
- 2
- n
- 10
UPDATE
这是我目前的代码:
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(); }); });
我有两个解决方案。 在第一个中,所有的li
都是分开滑落的:
var n = 4; jQuery('#sales li:lt(' + n + ')').show(); jQuery('#sales .expandSalesList').live('click',function() { jQuery('#sales li:gt(' + (n - 1) + ')').slideDown(); });
这很容易,现在看到解决方案所有的li
在一个单一的移动 ( 小提琴 )滑落:
var n = 4, $list = jQuery('#sales ul'); $list.find('li:lt(' + n + ')').addClass('show'); jQuery('#sales .expandSalesList').live('click',function() { var $li = jQuery(''); $list.find('li:gt(' + (n - 1) + ')').addClass('show') .appendTo($li); $li.appendTo($list).slideDown(function() { var $this = $(this); $this.find('li') .appendTo($list) $this.remove(); }); n = $list.find('.show').length; });
介意有以下CSS:
.listContainer li { display: none; } .listContainer li.show { display: block; }