我有一个列表元素,包含20-30个事件之间的数量.我只想展示其中的5个,并有一个«更多»链接我可以点击观看接下来的五个.如果附加五个下一个事件并不重要.
找不到实际执行此操作的jQuery脚本,或者我只是盲目?我不想使用旋转木马插件或类似的东西.
好吧,幸运的是,对于我们编写食物和名望代码的程序员来说,并非所有可以想象的功能都已编写为插件:)
但这很容易:
var from = 0, step = 5;
function showNext(list) {
list
.find('li').hide().end()
.find('li:lt(' + (from + step) + '):not(li:lt(' + from + '))')
.show();
from += step;
}
function showPrevious(list) {
from -= step;
list
.find('li').hide().end()
.find('li:lt(' + from + '):not(li:lt(' + (from - step) + '))')
.show();
}
// show initial set
showNext($('ul'));
// clicking on the 'more' link:
$('#more').click(function(e) {
e.preventDefault();
showNext($('ul'));
});
Run Code Online (Sandbox Code Playgroud)
当然,这可以更好地提取到类似插件的功能中,但我会将其作为读者的练习;)
<html>
<head><title>Test</title></head>
<body>
<ul class="more">
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
<li>six</li>
<li>seven</li>
<li>eight</li>
<li>nine</li>
<li>ten</li>
</ul>
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript">
$(function() {
$("ul.more").each(function() {
$("li:gt(4)", this).hide(); /* :gt() is zero-indexed */
$("li:nth-child(5)", this).after("<li class='more'><a href='#'>More...</a></li>"); /* :nth-child() is one-indexed */
});
$("li.more a").live("click", function() {
var li = $(this).parents("li:first");
li.parent().children().show();
li.remove();
return false;
});
});
</script>
</script
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
基本上这是做什么的:
编辑:修正了一些小错误.以上是一个完全可行的示例(只需确保jquery链接正确).
| 归档时间: |
|
| 查看次数: |
17129 次 |
| 最近记录: |