我正在尝试以3个为一组选择<li>
,目前我正在使用此:gt
和:lt
$('.events_list li:lt(7):gt(3)').css('display', 'block');
这没关系,但似乎可能有更好的方法。我只想点击一个按钮,然后选择下一个3 <li>
。
答案 0 :(得分:4)
尝试
var triplet = 0;
$('button').click(function(){
$('.events_list li')
.hide() // hide the ones that are visible
.filter(function(i){
return i >= triplet*3 && i < (triplet+1)*3; // filter the next 3
})
.show(); // and show them
triplet++;
});
答案 1 :(得分:0)
您也可以尝试nextUntil:
$('.events_list li:eq(3)').nextUntil('.events_list li:eq(7)').css('display', 'block');
答案 2 :(得分:0)
jQuery("ul li").filter(function(index,el){return index>3 && index<7}).css('display', 'block');
试试这个。
答案 3 :(得分:0)
Gaby's answer对我来说效果很好(如果可以的话我会赞成它),但我的用例需要一个循环,而$ .filter的一个问题就是它遍历每个循环传递中的所有元素。所以我使用slice代替,它允许您从一组中选择元素。它还使代码稍微简单一些。作为额外的奖励,我将选择器移出功能,因为我认为列表本身不会改变,因此不需要一次又一次地选择它。
这是我的版本,基于Gaby的:
var triplet = 0;
var $elements = $('.events_list li');
$('button').click(function(){
$elements
.hide() // hide the ones that are visible
.slice( triplet*3, (triplet+1)*3)
.show(); // and show them
triplet++;
});
演示