2011-03-26 83 views
0

我试图写一个jQuery的声明如果..我想实现基本上是突出相应的链接(a)该某个DIV(infotab)被点击时。它们都是隐藏的,因为你可以看到,但点击时,可以看到一个很好的淡入淡出。我想突出显示被点击的项目。 (更改为任何我想要的背景颜色,如红色在下面的代码。)写作JQuery的声明如果

我有下面的代码工作,但不正确。它突出了该div中的所有a。我只想要那个被点击的高亮显示。感谢你的帮助,你们很棒。

$(document).ready(function() { 
    $('#infotab_two_s, #infotab_three_s, #infotab_four_s, #infotab_five_s').hide(); 
}); 

$('.subnav_holster li').click(function() { 
    var Vinfotab = this.id + '_s'; 
    $('.infotab:visible').fadeOut('fast', function() { 
     $('#' + Vinfotab).fadeIn('fast'); 
     var Vinfotab_selected = 'Vinfotab:visible'; 
     $("subnav_holster li a").css({ 
      "color": "red" 
     }); 
    }); 
}); 

回答

1

您应该缓存this,然后突出显示:

$('.subnav_holster li').click(function() { 
    var Vinfotab = this.id + '_s', 
     $this = $(this); 
    $('.infotab:visible').fadeOut('fast', function() { 
     $('#' + Vinfotab).fadeIn('fast'); 
     var Vinfotab_selected = 'Vinfotab:visible'; 
     $('.subnav_holster li a').css({ 
      "background-color": "white" // reset all to default color 
     }); 
     $this.find('a').css({ 
      "background-color": "red" // set highlight to this element only 
     }); 
    }); 
}); 
+0

为什么要缓存这个?如果选择另一个div,是否可以删除效果? – Josh 2011-03-26 03:43:57

+0

这就是'//全部重置为默认颜色'的行是 – mVChr 2011-03-26 03:45:12

+0

我的意思是如果另一个选项卡被点击,原始选项卡仍然是红色的。我想让它回到白色。你明白吗? – Josh 2011-03-26 03:46:18

2

抓住li被点击并访问该元素的a

$('.subnav_holster li').click(function() { 
    var Vinfotab = this.id + '_s'; 
    var clicked = $(this); 
    $('.infotab:visible').fadeOut('fast', function() { 
     $('#' + Vinfotab).fadeIn('fast'); 
     var Vinfotab_selected = 'Vinfotab:visible'; 
     clicked.find('a').css({ 
      "color": "red" 
     }); 
    }); 
}); 
+0

精彩!!!!现在我怎么能改变我删除颜色,虽然如果另一个李被点击? – Josh 2011-03-26 03:41:31

+0

@Josh:在'clicked.find( 'A')'位,后做'clicked.siblings()找到( 'A')的CSS({ “颜色”: “白色”});'。这将其他元素变成白色。 – BoltClock 2011-03-26 03:44:07

+0

似乎并没有工作..如果点击另一个里,我不想原来是红色的。我想让当前按钮成为颜色,而不是让它们都变成红色。你知道吗 – Josh 2011-03-26 03:47:54