Jquery隐藏/显示列表元素从ul
jquery hide/show list elements from ul
我想制作一个处理列表元素的"显示更多/更少"的脚本。我找到了这个脚本:
HTML<ul id="myList">
<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>
<li>Eleven</li>
<li>Twelve</li>
</ul>
<div id="loadMore">Load more</div>
<div id="showLess">Show less</div>
CSS #myList li{ display:none;
}
#loadMore {
color:green;
cursor:pointer;
}
#loadMore:hover {
color:black;
}
#showLess {
color:red;
cursor:pointer;
}
#showLess:hover {
color:black;
}
JQUERY $(document).ready(function () {
size_li = $("#myList li").size();
x=3;
$('#myList li:lt('+x+')').show();
$('#loadMore').click(function () {
x= (x+5 <= size_li) ? x+5 : size_li;
$('#myList li:lt('+x+')').show();
if(x<=3){$('#showLess').hide();}
});
$('#showLess').click(function () {
x=(x-5<0) ? 3 : x-5;
$('#myList li').not(':lt('+x+')').hide();
});
});
https://jsfiddle.net/6FzSb/1550/现在我想知道javascript第6行和第10行是如何工作的,以及我如何隐藏showmore,如果所有条目都显示,以及如何隐藏showless,如果只有3个条目剩下如下所示?
你可以这样做
var visible = 3;
$("#myList li:lt(" + visible + ")").show();
$("#loadMore").click(function() {
$("#showLess").show();
visible = $("#myList li:visible").length + 3;
$("#myList li:lt(" + visible + ")").show();
if (visible == $("#myList li").length)
$(this).hide();
});
$("#showLess").click(function() {
$("#loadMore").show();
visible = $("#myList li:visible").length - 3;
$("#myList li:gt(" + (visible - 1) + ")").hide();
if (3 == $("#myList li:visible").length)
$(this).hide();
});
小提琴
如果你问
$('#myList li:lt('+x+')').show();
然后Google 'jquery selector lt'。
关于如何显示/隐藏显示更多/更少的链接:你有所有的提示在你的代码-你知道如何计算列表大小(..size()),如何隐藏和显示DOM元素(..hide()和..show()),所以现在有几个if块隐藏'show less'在加载和隐藏'show more'在点击处理程序
查看更新后的代码,
$(document).ready(function () {
size_li = $("#myList li").size();
x=3;
$('#myList li:lt('+x+')').show();
$('#showLess').hide();
$('#loadMore').click(function () {
x= (x+5 <= size_li) ? x+5 : size_li;
$('#myList li:lt('+x+')').show();
if(size_li == x){
$(this).hide();
}else{
$('#showLess').show();
}
});
$('#showLess').click(function () {
x=(x-5<0) ? 3 : x-5;
$('#myList li').not(':lt('+x+')').hide();
if(x <= 3){
$('#showLess').hide();
}else{
$('#loadMore').show();
}
});
});
JSFIDDLE
相关文章:
- 将列表元素动画制作到顶部
- 使用Razor和javascript来获得下拉列表元素
- 根据列表元素的值使用JQuery获取列表元素
- 将列表元素动态添加到ul元素中
- JQuery Mobile UL列表仍然不能用于动态列表
- 使用 jquery 库获取锚点列表元素内的文本
- 在没有大量回调函数的情况下在列表元素上循环播放同一动画
- 使用JSON和JavaScript添加额外的html列表元素
- 将 ul 列表保存到 json 对象中
- 范围和列表元素在 DIV 中换行
- 在转换后的 UL 列表中添加选择选项
- 创建带有文本输入和按钮的 UL 列表
- 如何使用 JavaScript 增长树的 UL 和 ol 列表元素
- 如何使ul列表中的元素不可排序和不可拖动
- 如何警告多组ul列表元素的目标id
- 水平滑动ul列表元素
- 获取XML元素属性值并设置为HTML ul列表类型
- JSP ul列表元素动态选择
- 访问ul列表中的元素
- Jquery隐藏/显示列表元素从ul