javascript - jQuery:获取活动链接索引总是返回 0
问题描述
我有一个带有 3 个链接的简单菜单,单击其中一个链接我将活动类设置为该特定链接。我想要实现的是查看单击了哪个元素以及哪个元素具有活动类,以便我可以在 jQuery 中制作动画。
我的操作员将始终给我-=
,因为 activeIndex 始终为 0 并且 clickIndex 实际上是正确的。
什么可以解决这个问题?
$('.tabs').on('click', 'li > a', function() {
let tabs = $('.tabs');
let activeIndex = $('a.active', tabs).index();
let clickedIndex = $(this).closest('li').index();
let operator = (activeIndex > clickedIndex) ? '+=' : '-=';
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="tabs">
<li><a href="#" class="another-class active">Link 1</a></li>
<li><a href="#" class="another-class">Link 2</a></li>
<li><a href="#" class="another-class">Link 3</a></li>
</ul>
解决方案
也许你是这个意思?
$('.tabs').on('click', 'li > a', function(e) {
e.preventDefault();
let $active = $('.tabs').find("li.active");
let activeIndex = $active.index();
let $clicked = $(this).closest('li');
let clickedIndex = $clicked.index();
$active.removeClass("active");
$clicked.addClass("active");
let operator = (activeIndex > clickedIndex) ? '+=' : '-=';
console.log(activeIndex,clickedIndex,operator)
});
.active { background-color:red }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="tabs">
<li class="active"><a href="#" class="another-class">Link 1</a></li>
<li><a href="#" class="another-class">Link 2</a></li>
<li><a href="#" class="another-class">Link 3</a></li>
</ul>
推荐阅读
- outlook - 在 Web Outlook 中以 .MSG 格式下载电子邮件正文和附件
- android - 启用/禁用一个开关首选项时再启用/禁用两个开关首选项
- arrays - 将多个 Json 数组转换为单个数组,而不是父数组中的数组
- jquery - 使用jQuery在DOM中进行遍历和替换的效率
- java - Scala 11中的函数参数问题,使用resilience4j在Scala 12中工作
- python-3.x - 在曲面上方显示 scatter3D (plot_trisurf),zorder 不起作用
- ios - 检测 IAP 取消
- node.js - 无法连接到远程服务器上的 HiveMQ
- mysql - MySQL选择具有两个给定值的ID
- html - 在圆圈内打勾