我有一些<li>
个类名,如下所示;
<li class="2014" data-order=""></li>
<li class="2014" data-order=""></li>
<li class="2013" data-order=""></li>
<li class="2013" data-order=""></li>
<li class="2013" data-order=""></li>
<li class="2012" data-order=""></li>
我需要一个jQuery函数来为每个<li>
元素的数据顺序添加值。值必须设置如下。
<li class="2014" data-order="1"></li>
<li class="2014" data-order="2"></li>
<li class="2013" data-order="1"></li>
<li class="2013" data-order="2"></li>
<li class="2013" data-order="3"></li>
<li class="2012" data-order="1"></li>
<li class="2011" data-order="1"></li>
数据顺序将从一个开始。当多个<li>
具有相同的类时,数据顺序将开始递增1.
答案 0 :(得分:2)
<强> DEMO 强>
var $ord = $('[data-order]');
$ord.each(function(){
var $ordSib = $('.'+ this.className );
return $(this).data('order', $ordSib.index(this)+1 );
});
使用jQuery元素中的.index( this )
方法Array集合将返回该元素的索引位置。索引是&#39; 0&#39; 0基于你只需增加1
答案 1 :(得分:1)
var arrayOfClasses=[];
$('li').each(function(){
var elementsClass=$(this).attr('class');
if($.inArray(elementsClass,arrayOfClasses)==-1){
arrayOfClasses.push(elementsClass);
}
});
for(var i in arrayOfClasses){
var className=arrayOfClasses[i];
var count=0;
$('li').each(function(){
if($(this).hasClass(className)){
count=count+1;
$(this).attr('data-order',count);
}
});
}