2012-10-25 115 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