首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单击将类逐个添加到所有元素

单击将类逐个添加到所有元素
EN

Stack Overflow用户
提问于 2016-03-06 18:18:38
回答 3查看 1.9K关注 0票数 4

我只想在每次单击时将类从第一个元素移动到最后一个元素。在我的第一个单击中,它将类添加到第一个<li>,在第二个单击时,它将类移动到第二个<li>,并从第一个<li>中移除该类,依此类推。

代码语言:javascript
运行
复制
<script>
    $(function() {
        $('button').on('click', changeClass);

        function changeClass() {
            var ind = $(this).index();
            var i = 0;
            $("li").eq(i).addClass("current").siblings().removeClass("current");
        }
    });
</script>

http://codepen.io/anon/pen/QNyWQL

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-06 18:21:46

您可以像使用eq()方法一样执行以下操作。首先将index设置为0并获取li的总数,然后单击按钮,从所有li中删除current类,并将current类设置为li at index。在此之后,通过1增加索引。要在到达最后一个li后返回第一个(index+1) % total,请使用(index+1) % total

代码语言:javascript
运行
复制
var index = 0;
var total = $("li").length;

$("button").click(function() {
  $("li").removeClass("current");
  $("li").eq(index).addClass("current"); 
  index = (index+1) % total;
});
代码语言:javascript
运行
复制
.current{color:red}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
    <li>one</li>
    <li>one</li>
    <li>one</li>
    <li>one</li>
    <li>one</li>
</ul>

<button>click</button>

票数 2
EN

Stack Overflow用户

发布于 2016-03-06 18:27:46

另一种没有索引的方法。

代码语言:javascript
运行
复制
$("button").click(function(){
  var el = $('li.current');

  if(el.length == 0){
     $('ul').find('li').eq(0).addClass('current');//if no current exist
     return;
  }
  $('li.current').removeClass('current');
  if(typeof el.next() !== 'undefined'){
      el.next().addClass('current');
  }
})
代码语言:javascript
运行
复制
.current{color:red}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
    <li>one</li> <!-- initialize with atleast one class current -->
    <li>one</li>
    <li>one</li>
    <li>one</li>
    <li>one</li>
</ul>

<button>click</button>

票数 0
EN

Stack Overflow用户

发布于 2016-03-06 19:31:34

首先,查找next li和类“”,并删除当前li的类。然后检查长度是否大于0,否则不存在均值元素。

代码语言:javascript
运行
复制
$('button').on('click', function() {
   var next = $('#main').find('li.current').removeClass('current').next('li');
   if(next.length) { next.addClass('current'); }
   else { $('#main').find('li').first().addClass('current'); }
});

<ul id="main">
  <li>One</li>
  <li>Two</li>
  <li>Three</li>
  <li>Four</li> 
  <li>Five</li>
</ul>

https://jsfiddle.net/sbLhewgh/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35830645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档