2015-12-23 93 views
1

我在處理爲什麼我的選項卡內容無法正確切換時遇到一些問題,只能在最後一個工作。有沒有人有任何想法?jQuery自定義選項卡無法正常工作

https://jsfiddle.net/x04o2kb6/

JS:

$(document).ready(function($) { 

    var activateTab = function(index) { 
     var tab = $(".tabs-menu li:eq(" + index + ")"), 
      tabContent = $(".tab div:eq(" + index + ")"); 

     tab.addClass("active"); 
     tab.siblings().removeClass("active"); 
     tabContent.siblings().css("display", "none"); 
     tabContent.show(); 
    } 

    var automation = { 
     start: function() { 
      this.current = setInterval(function() { 
       var currentIndex = $(".tabs-menu li.active").index(), 
        max = $(".tabs-menu li.active").parent().children().length; 
       activateTab(currentIndex + 1 < max ? currentIndex + 1 : 0); 
      }, 2000); 
     }, 
     stop: function() { 
      if (this.current) { 
       clearInterval(this.current); 
      } 
     } 
    } 

    $(".tabs-menu a").click(function(event) { 
     event.preventDefault(); 
     activateTab($(event.currentTarget).parent().index()); 
    }); 

    //automation.start(); 

}); 

回答

0

更改activateTab功能如下 -

var activateTab = function(index) { 
    var tab = $(".tabs-menu li:eq(" + index + ")"), 
     tabContent = $(".tab > div:eq(" + index + ")"); 

    tab.addClass("active"); 
    tab.siblings().removeClass("active"); 
    tabContent.siblings().css("display", "none"); 
    tabContent.show(); 
} 
+0

完美感謝隊友! – James

0

有錯的CSS選擇器,當您選擇選項卡內容的div。使用這一個來選擇只有孩子tabContent = $(".tab > div:eq(" + index + ")"); 你的CSS選擇器選擇所有div。

0

你不是指適當的tabContent。它總是用來獲取index即無論你傳遞給函數,說可能是3,2,並特別div被拿來不論其層次..只要有確切類改變:

tabContent = $(".tab div.mainFeatureCopy:eq(" + index + ")"); 

參考div與同級車在這裏,即mainFeatureCopy

DEMO

0

請檢查我現在已經更新tabContent = $(".tab>div:eq(" + index + ")");檢查Fiddle

0
tabContent = $(".tab div:eq(" + index + ")") 

沒有得到合適的對象,你應該使用

tabContent = $(".tab-content:eq(" + index + ")") 
相關問題