我有一个div
框,其中包含ul
个列表,我想在彼此之下显示3个li
项,然后slide
/ toggle
另一个我列表中的3项。
例如,在我的ul
中,我会有9个li
个项目,但我首先只显示3个项目,然后点击下一个按钮我会接下来的三个项目,点击上一个按钮我会看到列表中的最后3个。
这可能吗?
我的示例代码:
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
<li>item 6</li>
<li>item 7</li>
<li>item 8</li>
<li>item 9</li>
</ul>
答案 0 :(得分:3)
// ======= EDIT HERE ===========
var $el = $('li');
var showN = 3;
// =============================
var elTot = $el.length;
var c = 0;
$('ul li').slice(showN).hide();
function toggle(){
var cc= c<=-1 ? c=elTot-showN : c=c%elTot;
$el.hide().slice(c,(c+showN)).show();
}
$('#prev, #next').click(function(){
id = this.id==='next' ? (c+=showN) : (c-=showN);
toggle();
});
// =============================
答案 1 :(得分:1)
这样的事情
$('#next').click(function(){
var index = $('ul li:visible').last().index() +2
$('ul li:visible').slideUp().last().nextUntil(':nth-child('+index+'n+3)').slideDown();
})
答案 2 :(得分:0)
您可以执行以下操作:
var showNumber = 3;
var startPos = 0;
var endPos = showNumber;
var $List = $('ul li');
$List.hide().slice(startPos ,endPos).fadeIn();
$('a').click( function() {
startPos = startPos + showNumber;
endPos = endPos + showNumber;
$List.hide().slice(startPos ,endPos).fadeIn();
return false;
});
请参阅:http://jsfiddle.net/YURck/
基本上它的作用是,它设置一次显示的数量(showNumber),然后确定要切片的开始和结束索引。
要扩展它,您可以检查长度,以便在最后一组元素时隐藏“下一个”链接。
希望有所帮助:)