2011-03-26 79 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