如何使用 jQuery 匹配两行内两个锚点的索引
How to match the index of two anchors within two rows using jQuery?
我有一个带有两行链接的容器。我需要向链接到同一位置的两个链接添加一个 nav_link--hover
类,这些链接在父div 中也具有相同的索引号。
如何更新它以使用索引号匹配两个锚点,而不仅仅是在容器索引中找到的第一个锚点?
例如,如果我将鼠标悬停在第四个链接上,我希望将nav_link--hover
类应用于第二个链接(第一行)和第二个链接(第二行)。
JSFiddle
<nav class="nav_container">
<div class="row-one">
<a href="#a" class="nav_link">
<div class="nav_image sprite-cat"><img></div>
</a>
<a href="#b" class="nav_link">
<div class="nav_image sprite-cat2"><img></div>
</a>
</div>
<div class="row-two">
<a href="#a" class="nav_link">
<div class="nav_text">Item One</div>
</a>
<a href="#b" class="nav_link">
<div class="nav_text">Item Two</div>
</a>
</div>
</nav>
<script>
var $container = $('.nav_container');
$('.nav_link').each(function(i) {
$(this).on({
mouseover: function() {
$container.find('.nav_link').eq(i).addClass('nav_link--hover');
},
mouseout: function() {
$container.find('.nav_link').eq(i).removeClass('nav_link--hover');
}
});
});
</script>
如果你想要索引,你可以使用index()
和nth_child
来定位该索引的所有子项等。
var $container = $('.nav_container');
$('.nav_link').on({
mouseenter: function() {
$('.nav_link:nth-child(' + ($(this).index() + 1) + ')').addClass('nav_link--hover');
},
mouseleave: function() {
$('.nav_link:nth-child(' + ($(this).index() + 1) + ')').removeClass('nav_link--hover');
}
});
小提琴
试试这个:
$('.nav_link').each(function(i) {
$(this).on({
mouseover: function() {
// get the href link
var link = $(this).prop('href');
//get the anchor
var hash = link.substring(link.indexOf("#")+1);
// find all the a tags with href = #anchor, and add css class
$("a[href='#"+hash+"']").addClass('nav_link--hover');
},
mouseout: function() {
var link = $(this).prop('href');
var hash = link.substring(link.indexOf("#")+1);
$("a[href='#"+hash+"']").removeClass('nav_link--hover');
}
});
});
和更新的小提琴
你快到了。
更新了您的小提琴 https://jsfiddle.net/qxatn2d1/
$('.nav_link').each(function(i) {
$(this).on({
mouseover: function() {
$('a[href="'+ $(this).attr('href') +'"]').addClass('nav_link--hover');
},
mouseout: function() {
$('a[href="'+ $(this).attr('href') +'"]').removeClass('nav_link--hover');
}
});
});
做到了。它正在寻找具有相同 href 的所有a
元素。我宁愿更改您的html,但对于这个特定问题,我认为这是您的解决方案。
希望这有帮助,干杯。
相关文章:
- 减去两个索引不同但值相同的整数
- 从两个基于0的for循环迭代器中获取单个基于0的索引的公式
- 两个不同部分的选项卡索引
- 如何确定数组中的值是否位于两个附加数组的所有并行索引的值之间
- 如何在ng-options中添加两个索引,并使用Angular.js动态设置值
- jQuery将相同的类添加到两个不同容器中的同一元素索引中
- 如何使用 jQuery 匹配两行内两个锚点的索引
- Javascript,Jquery - 当元素被单击时,我在索引上得到两个值
- 索引数据库中的两个查询
- 将两个数组中的项目合并到第三个数组中,其中一列从第一个数组中减去第二个索引
- 查找循环数组中任意两个索引之间的中间索引
- 为什么我的输入被插入到具有相同索引的两个diff数组中?(js)
- 如何访问相同索引级别但位于不同父DIV中的两个元素
- JavaScript正则表达式匹配将输入作为前两个索引返回
- javascript在两个不同的索引处拆分字符串
- 将相同的随机化数组索引值应用于两个不同的变量
- 我比较两个字母的索引得到错误的结果
- 使用indexOf()获取两个索引之间的子字符串
- Javascript -如何比较数组中的两个索引
- 两个索引之间的多个顺序字符串替换