如何为每个li元素添加一个带有元素个数的类?

特雷斯卡

我有这个HTML代码:

<ul class="tab-li">
<li>one</li>
<li>two</li>
<li>three</li>
</ul>

<ul class="tab-li">
<li>one</li>
<li>two</li>
<li>three</li>
</ul>

我想给它们每个添加一个类:

<ul class="tab-li">
<li class="li1">one</li>
<li class="li2">two</li>
<li class="li3">three</li>
</ul>

<ul class="tab-li">
<li class="li1">one</li>
<li class="li2">two</li>
<li class="li3">three</li>
</ul>

但是我得到了这个:

<ul class="tab-li">
<li class="li1">one</li>
<li class="li2">two</li>
<li class="li3">three</li>
</ul>

<ul class="tab-li">
<li class="li4">one</li>
<li class="li5">two</li>
<li class="li6">three</li>
</ul>

我的代码无法正常工作,因为它计算了所有代码,第二个代码<ul>继续使用前一个代码进行计数<ul>如何使它们对每个人独立?

我的jQuery代码:

$('ul.tab-li li').each(function(i){
  $(this).addClass('li'+(i == 0 ? i+1:i+1))
  $(this).text($(this).attr('class'))
})

这是我的代码的示例:https : //jsfiddle.net/Lynsvbgd/

罗里·麦克罗森(Rory McCrossan)

为使此功能按预期工作,您需要两个循环。一个通过每个.tab-li与另一个通过li该元素中:

$('ul.tab-li').each(function() {
  $(this).find('li').each(function(i) {
    let classname = 'li' + (i + 1);
    $(this).addClass(classname).text(classname);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="tab-li">
  <li>one</li>
  <li>two</li>
  <li>three</li>
</ul>

<ul class="tab-li">
  <li>one</li>
  <li>two</li>
  <li>three</li>
</ul>

如果可以保证li每个组只有3个,则可以使用单个循环和取模运算符:

$('ul.tab-li li').each(function(i) {
  let classname = 'li' + ((i % 3) + 1);
  $(this).addClass(classname).text(classname);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="tab-li">
  <li>one</li>
  <li>two</li>
  <li>three</li>
</ul>

<ul class="tab-li">
  <li>one</li>
  <li>two</li>
  <li>three</li>
</ul>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

向类中的每个元素添加一个<hr />元素,获取[Object object]或纯文本,而不是hr元素

如何将一个类一个接一个地添加到列表中的每个元素

如何测试此元素是否是整个文档中带有类的第一个元素?

将Angular添加到DOM的每个HTML元素添加一个CSS类

如何为包含特定字符串的列表中的每个唯一元素创建[n]个元素的随机样本(带有嵌套循环?)

如何为列表中添加的每个li元素添加一个删除按钮?

如何为无序列表中的每个元素添加一个复选框?

如何为数组中的每个元素添加一个附加属性,然后如何使用该属性影响输出的样式

如何删除所有元素的类期望一个数组

如何在scala中的另一个列表的每个元素的末尾添加一个列表的每个元素?

除了最后一个必须与其他元素具有相同高度的元素之外,如何为每个元素做出响应正方形?

如何使用jQuery为一个兄弟姐妹元素的所有父母添加类

jQuery用类名计算每个第一个li元素

如何为已分配了类的现有li添加一个类?

查找带有类的第一个元素,使用类追加标题元素

将带有数字的类添加到每个li元素,jquery

每个单词中的元素都添加一个类?

如何为永远唯一的元素分配一个数字?

如何将前一个数组元素的值添加到当前元素

如果元素具有类,则将类添加到另一个元素

向数组中的每个元素/整数添加一个数字

:带有类的元素的最后一个孩子

如何在动态元素上添加多个类,一个带有递增数字的类?

如何将一个类添加到一个元素并从所有兄弟元素中删除一个类 angular

为数组中的每个元素添加一个数字[Double]

如何在每个数组的末尾添加一个元素?

如何使用 jquery 将类添加或附加到最后一个 li 元素

如何为 React 组件数组中的每个元素添加一个类?

如何在numpy中将数组的每个元素与另一个没有循环的整个数组进行比较