我今天看到了this question并且好奇地制作了我自己的概念(或者可能是该问题的OP概念),但是在这里我怎么能在活动类之后迭代列表并从头开始。让我从以下html中了解到:
<ul>
<li name="6">one</li>
<li name="1" class="active">two</li>
<li name="2">three</li>
<li name="3">four</li>
<li name="4">five</li>
<li name="5">six</li>
</ul>
现在,如果活动类位于倒数第二个li中,那么看起来像这样:
<ul>
<li name="3">one</li>
<li name="4">two</li>
<li name="5">three</li>
<li name="6">four</li>
<li name="1" class="active">five</li>
<li name="2">six</li>
</ul>
对于更长的列表,这将是这样的:
<ul>
<li name="3">one</li>
<li name="4">two</li>
<li name="5">three</li>
<li name="6">four</li>
<li name="1" class="active">five</li>
<li name="2">six</li>
<li name="3">seven</li>
<li name="4">eight</li>
<li name="5">nine</li>
<li name="6">ten</li>
<li name="1">eleven</li>
<li name="2">tweleve</li>
</ul>
我的意思是我想这样做:
我所做的是:
$('li').attr('name',function(i){
i += 5
return i % 6 + 1;
});
但如果活动类位于第二个列表中,它只会很好。那么,如果我不知道活跃的课程在哪里,我该怎么办?
答案 0 :(得分:2)
这是一个很好的方法......;)
var stopvalue = 6;
var activeindex = $('li.active').index() % stopvalue ;
$('ul>li').attr('name', function (i) {
return (i + (stopvalue - activeindex)) % stopvalue + 1;
});
答案 1 :(得分:0)
使用 Demo Fiddle 检查此 .nextAll() 和 .prevAll()
var activeVal = $( "li.active" ).attr('name');
$( "li.active" ).nextAll().each(function(i){
$(this).attr('name',function(){
return i + parseInt(activeVal) + 1;
});
}).end().prevAll().each(function(i){
$(this).attr('name',function(){
return i +parseInt(activeVal)+1;
});
});
<强>注释:强>
.nextAll()
。迭代表格直到最后一个元素。.prevAll()
。从前一个到第一个迭代。要检查迭代,请在控制台中验证:
$('li').each(function(){
console.log($(this).attr('name'));
});