2012-10-25 114 views
0

在網站上即時通訊建設,每個標籤都有它要麼TAB1李,TAB2,TAB3等一類jQuery的添加活動標籤類body標籤

我想要做的是首先檢查,看是否有選項卡有一類「cur」,如果有,請檢查li的其餘部分以查看它是否具有「tab1」,「tab2」,「tab3」,「tab4」或「tab5」的另一個類,然後添加「標籤」類body標籤

得到得到這樣的

<body class="tab2"> 


<div class="nav"> 
<ul> 
    <li class="current1 tab1">First Tab</li> 
    <li class="current1 cur sub tab2">Second Tab</li> 
    <li class="current1 sub tab3">Third Tab</li>  
    <li class="current1 sub tab4">Fouth Tab</li>  
    <li class="current1 sub tab5">Fifth Tab</li>  
</ul></div> 

我試過下面有點像jQuery的,但它總是添加一個附加itional類tab5到身體以及

if ($('.navigation ul li.tab1').hasClass('cur')) { 
     $('body').addClass('tab1'); 
    } else if ($('.navigation ul li.tab2').hasClass('cur')) { 
     $('body').addClass('tab2'); 
    } else if ($('.navigation ul li.tab3').hasClass('cur')) { 
     $('body').addClass('tab3'); 
    } else if ($('.navigation ul li.tab4').hasClass('cur')) { 
     $('body').addClass('tab4'); 
    } else ($('.navigation ul li.tab5').hasClass('cur')); { 
     $('body').addClass('tab5'); 
    } 

我知道有這樣做的更清潔的方式,但似乎無法工作了

我希望我可以手動添加類,但我沒有訪問HTML等有使用JavaScript

產生的呢

任何幫助非常appreicated

感謝

+0

上的呼叫整數0到9,當然收盤)如果可以的話,我寫了jQueryUI的標籤,以及如何在博客操縱它們遠遠超出了被提及在他們自己的文檔中。 [看看它,它可以幫助你更容易地達到你的最終目標](http://spyk3lc.blogspot.com/2012/08/jqueryjqueryui-help-tabs-get-currently.html) – SpYk3HH

+0

在另一個說明,如果你使用jQueryUI標籤,那麼它就是一個'activate'事件,你可以使用它來爲你的類設置你的身體更容易。類似'.tabs({action:function(e,ui){$(「body」)。removeClass(ui.oldTab.attr(「class」)).addClass(ui.newTab.attr(「class」)) ;}})' – SpYk3HH

+0

更新了myy工作的答案,並且在一秒之內包括小提琴 – SpYk3HH

回答

0

如果你使用:

$('.navigation ul li.cur'); 

您將返回與選擇器匹配的所有元素的數組。然後,您可以使用元素ID ALA:

var elems=$('.navigation ul li.cur'); 
$('body').removeClass() 
elems.each(function(){ 
    $('body').addClass($(this).attr('id')) 
}) 
0
$('.nav li').click(function(){ 
    $('.nav li').removeClass('active'); 
    // set the attribute of tab that was clicked as active 
    $(this).attr('class', 'active');     
}); 

在這裏找到的jsfiddle:HTTP:如果您使用//jsfiddle.net/P5Kzr/

1

僅之後您所提供的基本知識(不確定一個像jQueryUI之類的標籤庫),你可以非常容易地簡化你正在做的事情,而不是所有ifs。

見下圖:

var patt = new RegExp(/tab[0-9]/), 
    tabClass = "" + $(".cur").attr("class").match(patt); 
$('body').removeClass("tab1 tab2 tab3 tab4 tab5") 
    .addClass("" + tabClass); // the "" + is required 

爲一條線:

$('body').removeClass("tab1 tab2 tab3 tab4 tab5").addClass("" + $(".cur").attr("class").match(/tab[0-9]/)); 

jsFiddle

1班輪

    明細
  • $('body') jQuery選擇 - 這一次抓起body元素
  • .removeClass("tab1 tab2 tab3 tab4 tab5")去除元素可能的類,沒有錯誤,如果類不元素存在,所以不用擔心
  • .addClass(這個開始添加要添加到班級的主體元素
  • 「」 + $(".cur")的「在這裏保證一個正則表達式匹配的適當的字符串返回,當然你的基本jQuery選擇再次,在這種情況下,與類cur
  • .attr("class")此舉旨在讓所有類抓住元素元素續在新的jQuery版本癌寧類cur
    • ,你可能會考慮改變這.prop()
  • .match(/tab[0-9]/))最後,用正則表達式中使用的舊JS匹配方法僅抽出類名以tab起點,也有結束爲.addClass()元素body
+0

這就是我一直在尋找的東西,它很簡單,很有效。祝你好日子先生 – Decodal

+0

沒問題。有一些「OL」學校的思路程序員覺得你必須打破一切,把所有東西都分離出來。有些人甚至更喜歡像Dojo和Prototype這樣的圖書館。在一天結束時,jQuery提醒我們JavaScript是不同的,「保持簡單」。 – SpYk3HH