我只是想知道如何改进这段代码:
pagination.children('li.active').prev().prev().prev().prev().prevAll('li.pgn').css("display","none");
我只是不喜欢.prev()
链,我没有找到改进它的方法,但我确定你知道如何; - )
编辑:
分页是我的ul
,其中包含很多li
,其中一个人拥有active
类。
我想在li
之前选择所有li.active
,而不是之前的前一个pgn
。
例证(忘记<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li class="active"></li>
类):
<li style="displat: none;"></li>
<li style="display: none;"></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li class="active"></li>
这样就可以了:
{{1}}
答案 0 :(得分:3)
您可以使用:gt()
选择器。
pagination.children('li.active').prevAll('li:gt(4)').hide();
答案 1 :(得分:1)
我认为您这样做的事实表明您的页面/应用程序的设计可以改进。
为什么你必须找到活跃类的LI?你为什么不知道这个?肯定是你的应用程序首先产生了标记。
好像你正试图从标记中确定状态,我希望从中避开。你应该有一个对象告诉你选择了哪个LI索引。然后,您可以使用更简单的jQ选择器来选择您感兴趣的索引。
答案 2 :(得分:0)
试试这个
修改强>
var pagination = $('ul');
var len = pagination.find('li.active').prevAll('li').length;
pagination.find('li.png').slice(0 , len-5).css('display','none');
答案 3 :(得分:0)
你可以试试这样的......
var $prevAll = pagination.children('li.active').prevAll('li.pgn');
var prevCount = $prevAll.length;
$prevAll.filter(function(index){
return (prevCount - index < 5)
}).hide() //instead of - .css("display", "none");
使用filter方法并将函数传递给它。
这是一个有效的例子。