首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery -从一个列表项获取活动类,并将该类设置为另一个列表

jQuery -从一个列表项获取活动类,并将该类设置为另一个列表
EN

Stack Overflow用户
提问于 2015-12-10 09:39:56
回答 4查看 2.9K关注 0票数 3

我有两个清单,有5个项目

第一:

代码语言:javascript
复制
<ol class="controls">
    <li><a id="bullet-0">1</a></li>
    <li><a class="active" id="bullet-1">2</a></li>
    <li><a id="bullet-2">3</a></li>
    <li><a id="bullet-3">4</a></li>
    <li><a id="bullet-4">5</a></li>
</ol>

第二:

代码语言:javascript
复制
<ul class="years">
    <li id="to-1973" class="year">1973</li>
    <li id="to-1983" class="year">1983</li>
    <li id="to-1994" class="year">1994</li>
    <li id="to-2004" class="year">2004</li>
    <li id="to-2015" class="year">2015</li>
</ul>

我想使用jQuery检查第一个列表中的hasClass 'active‘,然后将这个类设置为第二个列表。

例如:

如果第一列表中的第二项具有类 active ,则将该类active设置为第二列表中的第二项,然后等。如果第一列表中的第三项为active,则从第二列表中删除活动项并将其设置为第三项。

谢谢!)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-10 09:49:46

似乎大多数答案都是针对列表项而不是锚点(其中有活动类)。

代码语言:javascript
复制
//get the index of the active control (target anchor, then get index of parent li)
var index = $('.controls a.active').parent().index();
//remove the current active from the years
$('.years li.active').removeClass('active');
//assign active to correct year
$('.years li').eq(index).addClass('active');
票数 2
EN

Stack Overflow用户

发布于 2015-12-10 09:42:10

您可以使用.eq().index()

代码语言:javascript
复制
$('.years > li').eq($('.controls > li > a.active').closest('li').index()).addClass('active');

从第一个列表中获取li索引,然后addClass到第二个列表中相同的li索引。

如果您需要在单击事件中使用它

代码语言:javascript
复制
$('.controls > li > a').on('click', function(){
   var ThisIt = $(this);
   $('.years > li').eq(ThisIt.closest('li').index()).addClass('active');
});

Working Demo

注意:不要忘记包括jquery

票数 1
EN

Stack Overflow用户

发布于 2015-12-10 09:44:10

你可以用这个:

代码语言:javascript
复制
$('.controls > li').on('click', function() {
  $('.active').removeClass('active'); // first remove the active class
  $('a', this).addClass('active'); // now add the active class
  $('.years > li').eq($('.controls .active').parent().index()).addClass('active');
  // here you can add the active class to specific list item.
});
代码语言:javascript
复制
.active {
  color: red;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
First:

<ol class="controls">
  <li><a id="bullet-0">1</a>
  </li>
  <li><a id="bullet-1">2</a>
  </li>
  <li><a id="bullet-2">3</a>
  </li>
  <li><a id="bullet-3">4</a>
  </li>
  <li><a id="bullet-4">5</a>
  </li>
</ol>
Second:

<ul class="years">
  <li id="to-1973" class="year">1973</li>
  <li id="to-1983" class="year">1983</li>
  <li id="to-1994" class="year">1994</li>
  <li id="to-2004" class="year">2004</li>
  <li id="to-2015" class="year">2015</li>
</ul>

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

https://stackoverflow.com/questions/34198293

复制
相关文章

相似问题

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