html - 如何为每个 li 元素添加一个具有元素数量的类?

标签 html jquery

我有这个 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/

最佳答案

要使其按预期工作,您需要两个循环。一个通过每个 .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>

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

$('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>

关于html - 如何为每个 li 元素添加一个具有元素数量的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61369320/

相关文章:

html - 如何水平居中元素?

jquery - 如何在所有元素上触发事件

javascript - jQuery 表单验证仅适用于一次问题

javascript - 通过 anchor 链接实现跳转到主要内容技术时更新键盘焦点

Jquery 选择 href 到 JPG

javascript - SimpleModal - 如何将电子邮件地址传递给确认模式?

javascript - 使用 JQuery OnClick 创建多个 HTML 元素

javascript - 如何处理多个按钮的输入键功能?

javascript - 有什么方法可以检测 React JS 中的中间点击吗?

javascript - 有趣的问题;本地存储和 MongoDB