如何给每行第一个元素添加类名

html结构是下面这样的,li是后台循环出来的没有固定数量;
页面排布按照一行四个,我需要给每行第一个添加特殊样式;
想用js循环添加;
但是我写出来只能给最初一行的第一个li添加,后面的都没有加上不知道为什么;
ps:css选择器能不能实现?
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
...
</ul>

<script>
$("li").each(function(i){
  var j=0;
  if (4*j+1==i+1) {
    $(this).addClass('lineFirst')
    j++;
  }
});
</script>
阅读 4.5k
4 个回答

你那样写每次循环变量都会被重新赋值,j++没用啊。
不要用jquery对象的each。
用jquery的工具 $.each(objs,function(i,n){
......
})

你这样写试试

JQuery.each($("li"),function(i,n){
if(i%4==0){
$(this).addClass('lineFirst');
}

})

这样判断(i+1)%4==0

css 应该能选吧
ul li:nth-child(4n + 1){
    ...        
}

不用额外加class,css3选择控制:

li:nth-child(4n+1) {
    color: red;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题