我有一个elemnts列表(比方说10),我只在页面加载时显示前4个
点击more
将展开列表并显示剩余元素。
我的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() {});
});
答案 0 :(得分:3)
显示所有尚未显示的人:)
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();
});
});
答案 1 :(得分:2)
我有两个解决方案。在第一个中,所有li
分别向下滑:
var n = 4;
jQuery('#sales li:lt(' + n + ')').show();
jQuery('#sales .expandSalesList').live('click',function() {
jQuery('#sales li:gt(' + (n - 1) + ')').slideDown();
});
这很简单,现在看到所有li
在一个移动(fiddle)中向下滑动的解决方案:
var n = 4,
$list = jQuery('#sales ul');
$list.find('li:lt(' + n + ')').addClass('show');
jQuery('#sales .expandSalesList').live('click',function() {
var $li = jQuery('<li />');
$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;
}