我的代码出了什么问题?

时间:2011-05-19 06:31:19

标签: jquery

我有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();
    })    
})
任何人都可以说,我在这里做的是不是错了?

提前感谢。

3 个答案:

答案 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/