我需要关于.index的帮助(尝试了几种方法来实现我想要的但不幸的是它失败并且头疼大笑,也许这里有人能指出我正确的方向 - 我很感激它)
我有这种列表(作为标签):
<ul class="menutabs slideshow">
<li><a href="" class="current-page-item">Latest Addition</a></li>
<li><a href="">Most Download</a></li>
<li><a href="">Most Watch</a></li>
<li><a href="">Top Rated</a></li>
</ul>
<!-- some other html here -->
<ul class="menutabs">
<li><a href="" class="current-page-item">Genres</a></li>
<li><a href="">Years</a></li>
</ul>
<!-- some other html here -->
<ul class="menutabs">
<li><a href="" class="current-page-item">Top Rated</a></li>
<li><a href="">Popular</a></li>
</ul>
这是js代码:
// on click show the associated tab list
$('.menutabs li').click(function(i) {
i.preventDefault();
//var index=$('.menutabs li').index(this);
var index=$('.menutabs li').eq();
var parent=$('.menutabs li:eq('+index+')').parent().index();
alert('INDEX MENUTABS LI A:'+index+' INDEX PARENT:'+parent);
$('.menutabs li:eq('+index+') a').removeClass('current-page-item');
$('.menutabs li:eq('+index+') a').toggleClass('current-page-item');
}
警报部分显示了锚链接的正确索引号。然而,对于父索引,似乎只有.menutabs的第1和第2个给出正确的索引号,但不是最后一个(第3个menutabs)。
但是,在尝试更改css边框时,它可以正常工作(.menutabs边框已更改为指定的红色)。这真让我感到困惑。
实际上,alert和css border部分仅作为我试图捕获错误的测试,我需要的是当用户点击该类内的锚链接时检测父.menutabs的索引号。那么我可以在.menutabs中更改其他li的类名。
有人有任何解决此问题的建议,并提前感谢
答案 0 :(得分:0)
尝试
var index = $('。menutabs li')。eq();
答案 1 :(得分:0)
我不太确定你要做什么。这个Javascript被称为其中一个链接的点击处理程序吗?
如果是这样,可能会出现问题,因为您有多个ul.menutabs
,但在查找parent
时,您没有指定哪一个。$(this).parent().parent()
。更好的方法是css('border', '1px solid red')
,然后您就可以简单地调用$(this)
。
编辑:啊,这很简单。
在您的点击处理程序中,$(this).siblings('li').children('a').removeClass('current-page-item');
$(this).children('a').addClass('current-page-item')
将始终包含对所单击对象的引用。所以你可以做到以下几点:
{{1}}