2013-06-30 62 views
-3

即时通讯添加类称为tab-container在一个标签的每次点击时,问题是当ex:单击tab2,然后tab3,然后tab2类不会被删除,它只是不断添加类 - 所以,我要的是删除以前的类,添加新的课前...我如何添加和删除类

脚本:

$(".tabs-content div").hide(); // Initially hide all content 
      $(".tabs li:first").attr("id","current"); // Activate first tab 
      $(".tabs-content div:first").fadeIn(); // Show first tab content 

      $('.tabs a').click(function(e) { 
       e.preventDefault(); 
       var className = $(this).attr("name") 
       $(document).find(".tab-container").addClass(className); 

       if ($(this).closest("li").attr("id") == "current"){ //detection for current tab 
       return  
       } 
       else{    
       $(".tabs-content div").hide(); //Hide all content 
       $(".tabs li").attr("id",""); //Reset id's 
       $(this).parent().attr("id","current"); // Activate this 
       $('#' + $(this).attr('name')).fadeIn(); // Show content for current tab 
       } 
      }); 
+0

有多少'.tab-container's?如果您可以发布相关标记 – Bergi

+0

removeClass()或我不明白您的问题,这将有所帮助? –

+1

我假设这里真正的问题是你不明白如何跟踪以前选择的类?所以当点击一个新标签时,你需要知道要删除哪个类。 – James

回答

0
$(".tab-container").attr("class","tab-container "+className); 

您只需设置类这样属性到你想要的。

addClassremoveClass只是帮助功能,这种情况是对这种简单情况的高估。

+0

所以你认为OP应该删除''tab-container''类并将其替换为'className'? –

+0

你说得对,我编辑过。 – dirtv

0

可以删除所有类

$(document).find(".tab-container").removeClass().addClass(className); 

或者,如果你知道你可以删除一个类的名字

$(document).find(".tab-container").removeClass("tab2").addClass(className); 

如果需要remeber以前的类,你可以使用.data()

(没有经过测试的例子 - 它可能不适用于多于一个.tab-container

// get previous value 
last_class = $(document).find(".tab-container").data("last_class") 

$(document).find(".tab-container").removeClass(last_class).addClass(className); 

// remember new value 
$(document).find(".tab-container").data("last_class",className)