首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合.not和.eq?

结合.not和.eq?
EN

Stack Overflow用户
提问于 2016-09-12 02:23:05
回答 1查看 293关注 0票数 1

昨天我发布了一个问题,将2个相同的索引放在两个单独的无序列表中。

基本上,无序列表#2中的项是隐藏的--当您单击无序列表#1中的项时,无序列表#2中具有相同索引的项将会显示出来。

代码语言:javascript
复制
<ul class="list1">
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
  <li>item 4</li>
</ul>
<ul class="list2">
  <li class="hide">item 1</li>
  <li class="hide">item 2</li>
  <li class="hide">item 3</li>
  <li class="hide">item 4</li>
</ul>

.hide { display: none; }
.active { display: block; }

基于响应的解决方案是:

代码语言:javascript
复制
$('.list1').on('click', 'li', function() {    
    $('.list2 li').eq($(this).index()).addClass('active');
});

这个很好用!

现在,我正在尝试这样做,当一个行项出现时,其余的项就消失了。

我读到可以使用.not()方法完成此操作,但我很难将其与.eq()方法绑定。

如果我将下面的两个代码放在一起,它只会删除而不会添加。

代码语言:javascript
复制
$('.list2 li').eq($(this).index()).addClass('active');
$('.list2 li').not().eq($(this).index()).addClass('active');

我认为我必须将.eq()放入.not()方法中,但不确定如何操作。我也尝试过使用if语句,但也没有成功。

如果您能提供任何意见,我将非常感谢。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-12 02:31:07

为什么不删除所有li项上的active,只将其添加到相关的li

代码语言:javascript
复制
$('.list1').on('click', 'li', function() {    
  $('.list2 li')
    .removeClass('active')
    .eq($(this).index()).toggleClass('active');
});
代码语言:javascript
复制
.hide { display: none; }
.active { display: block; }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="list1">
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
  <li>item 4</li>
</ul>
<ul class="list2">
  <li class="hide">item 1</li>
  <li class="hide">item 2</li>
  <li class="hide">item 3</li>
  <li class="hide">item 4</li>
</ul>

如果你确实想使用not函数,你可以这样使用它:

代码语言:javascript
复制
$('.list1').on('click', 'li', function() {
  relevantLi = $('.list2 li').eq($(this).index())
  $('.list2 li').not(relevantLi).removeClass('active')
  relevantLi.addClass('active')
});
代码语言:javascript
复制
.hide { display: none; }
.active { display: block; }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="list1">
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
  <li>item 4</li>
</ul>
<ul class="list2">
  <li class="hide">item 1</li>
  <li class="hide">item 2</li>
  <li class="hide">item 3</li>
  <li class="hide">item 4</li>
</ul>

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

https://stackoverflow.com/questions/39439266

复制
相关文章

相似问题

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