我有4个链接,当点击每个链接时,我正在获取该链接的索引。我这样得index + 1 = 1, 2, 3 4
。据我说,当用户点击链接时,索引'li'需要fadeIn,reset必须fadeOut。所以,无论根据链接索引点击链接+ 1必须fadeIn,休息不应该在视图中。为此,我写了这段代码,但没有用。我的代码出了什么问题?
$('#b-fmg-slider a').each(function(index){
$(this).click(function(e){
$('#b-fmg-slider a').removeAttr('class');
$('#b-fmg-slider ul li').fadeOut();
$('#b-fmg-slider ul li',':nth-child('+index+1+')').fadeIn();
})
})
任何人都可以说,我在这里做的是不是错了?
提前感谢。
答案 0 :(得分:1)
使用替代方法可以非常容易地实现这一点。
首先淡出所有li-s(使用类选择器),然后fadeIn $(this)
(被点击的项目)。
至于你的代码错误的原因,你使用了两个独立的选择器(如果用逗号分隔它们,它们是单独的选择器)。
答案 1 :(得分:1)
尝试这样的事情:
$('#b-fmg-slider a').click(function (e) {
$('#b-fmg-slider ul li').fadeOut();
$(this).parent('li').next('li').fadeIn();
});
淡出所有li-s然后找到你点击的li(如果它不是直接后代,请使用parents()而不是parent()),然后找到它之后的那个 - 到让他消失。
答案 2 :(得分:1)
当你传入第二个参数时,你实际上是在为jQuery提供一个上下文来处理
$('#b-fmg-slider ul li',':nth-child('+index+1+')').fadeIn();//does not work
只需使用索引和过滤器
var i = $(this).index();
$('#b-fmg-slider ul li:eq(' + i + ')').fadeIn();
这是一个简单的小提琴:http://jsfiddle.net/WU7Tt/