2012-08-16 58 views
12

我期待的Twitter Bootstrap選項卡在定時序列上發生更改。我正在使用它們有點像旋轉木馬。我希望標籤每10秒更換一次。自動更改Twitter Bootstrap選項卡

下面是一個例子:http://library.buffalo.edu

點擊新聞故事,明白我的意思。任何幫助,將不勝感激。

+0

您正在使用什麼版本的Twitter的引導呢? – Florent 2012-08-16 14:53:28

+0

我使用的是v.2.0.4。 – closeyetfar 2012-08-16 19:06:37

回答

9

像這樣的東西將創建一個永無止境的旋轉木馬循環;它通過將所有選項卡循環並返回到第一個到達最後一個(更改#yourTabWrapper是一個合適的選擇出於某種包含您的標籤標記)後:

var tabCarousel = setInterval(function() { 
    var tabs = $('#yourTabWrapper .nav-tabs > li'), 
     active = tabs.filter('.active'), 
     next = active.next('li'), 
     toClick = next.length ? next.find('a') : tabs.eq(0).find('a'); 

    toClick.trigger('click'); 
}, 3000); 

我們所要做的是找到活動標籤,然後觸發列表中下一個選項卡上的click事件。如果有沒有下一個選項卡,我們在第一個選項卡上觸發click事件。請注意,事件實際上是在a上觸發的,而不是li

現在,如果您想要添加邏輯來暫停或重置用戶懸停時間或手動點擊選項卡的時間間隔,則需要單獨添加該選項卡,並且您將使用clearInterval(tabCarousel)來停止騎車。

這是一個基本的演示:

追趕懸停事件的--- jsFiddle DEMO ---

+1

非常感謝!你介意給我展示如何添加clearInterval(tabCarousel)讓它暫停懸停? – closeyetfar 2012-08-23 19:55:13

+3

這種方法效果很好。然而觸發'click'不是正確的方法。它可能會弄亂一些代碼。要更改標籤,只需將最後一行更改爲'toClick。('show')' – 2014-09-20 05:56:11

1

的一種方式。這真的取決於你想要阻止騎自行車的元素。選項卡或選項卡內容。這掛鉤到標籤。

$('.tabbable .nav-tabs > li').hover(function(){ 
    clearInterval(tabCarousel); 
}); 
3

另一個不錯的選擇是暫停播放幻燈片單擊選項卡時:

// Tab-Pane change function 
var tabChange = function(){ 
    var tabs = $('.nav-tabs > li'); 
    var active = tabs.filter('.active'); 
    var next = active.next('li').length? active.next('li').find('a') : tabs.filter(':first-child').find('a'); 
    // Use the Bootsrap tab show method 
    next.tab('show') 
} 
// Tab Cycle function 
var tabCycle = setInterval(tabChange, 5000) 
// Tab click event handler 
$(this).find('.nav-tabs a').click(function(e) { 
    e.preventDefault(); 
    // Stop the cycle 
    clearInterval(tabCycle); 
    // Show the clicked tabs associated tab-pane 
    $(this).tab('show') 
    // Start the cycle again in a predefined amount of time 
    setTimeout(function(){ 
     tabCycle = setInterval(tabChange, 5000); 
    }, 15000); 
}); 
7

修正了AppSol解決方案:

// Tab-Pane change function 
    var tabChange = function(){ 
     var tabs = $('.nav-tabs > li'); 
     var active = tabs.filter('.active'); 
     var next = active.next('li').length? active.next('li').find('a') : tabs.filter(':first-child').find('a'); 
     // Use the Bootsrap tab show method 
     next.tab('show') 
    } 
    // Tab Cycle function 
    var tabCycle = setInterval(tabChange, 5000) 
    // Tab click event handler 
    $(function(){ 
     $('.nav-tabs a').click(function(e) { 
      e.preventDefault(); 
      // Stop the cycle 
      clearInterval(tabCycle); 
      // Show the clicked tabs associated tab-pane 
      $(this).tab('show') 
      // Start the cycle again in a predefined amount of time 
      setTimeout(function(){ 
       tabCycle = setInterval(tabChange, 5000) 
      }, 30000); 
     }); 
    }); 
+1

實際上我更喜歡這個解決方案,而不是接受的解決方案,因爲它不使用click事件跳轉到下一個選項卡。點擊事件將導致例如。每次選項卡更改時關閉下拉導航! – Mik 2014-07-07 12:04:02

0

我已經加入了時鐘到Pallab的代碼。因此,即使在我的情況下超過10秒的時間點之前點擊不同的標籤,當前標籤會顯示10秒,標籤會在5秒後自動標籤。我是初學者,所以請耐心等待我的編碼。

你必須按2個或多個標籤,一個標籤的同時,在不到10秒

// Tab-Pane change function 

tabChange = function(){ 
    var tabs = $('.nav-tabs > li'); 
    var active = tabs.filter('.active'); 
    var next = active.next('li').length? active.next('li').find('a') : tabs.filter(':first-child').find('a'); 
    // Use the Bootsrap tab show method 
    next.tab('show'); 
} // Tab Cycle function 
function settabchnge() { 
    //alert("in set tab"); 
tabCycle = setInterval(tabChange, 5000); 
} 

settabchnge(); 

function cleartabchange() { 
    clearInterval(tabCycle); 
} 

$(function(){ 

    var counterofclock = 1; 
    var counterofmoreclicks = 1; 
    var clicked = false; 
    var sec = 0; 
    function startClock() { 
     if (clicked === false) { 
      clock = setInterval(stopWatch, 1000); 
      clicked = true; 
     }else if (clicked === true) { 
     } 
    }  
    function stopWatch() { 
      sec++; 
    } 
    function stopClock() { 
      window.clearInterval(clock); 
      sec = 0; 
      clicked = false; 
    } 
    $('.nav-tabs a').click(function(e) { 
     if(counterofclock === 1){ 
      startClock(); 
      counterofclock = 2; 
     }else { 
      stopClock(); 
      startClock(); 
     } 
     e.preventDefault(); 
     // Stop the cycle 
     if (counterofmoreclicks == 2 && sec < 11){ 
      clearTimeout(starttabchnage); 
     } 
     counterofmoreclicks = 2; 
     clearInterval(tabCycle); 
     // Show the clicked tabs associated tab-pane 
     $(this).tab('show') 
     // Start the cycle again in a predefined amount of time 
     starttabchnage = setTimeout(function(){ settabchnge();}, 10000); 
    }); 


}) 
0

控制用戶頻繁地手動點擊資產淨值,這是一個fiddle嘗試在單擊多個時間資產淨值

// Tab Cycle function 
 
    var tabCycle = setInterval(tabChange, 5000) 
 
    // Tab click event handler 
 
    $(function(){ 
 
     $('.nav-tabs a').click(function(e) { 
 
      e.preventDefault(); 
 
      // Stop the cycle 
 
      clearInterval(tabCycle); 
 
      // Start the cycle again in a predefined amount of time 
 
      $(this).tab('show') 
 
      setTimeout(function(){ 
 
       // Stop the cycle here too because if user clicked on tabs frequently then setTimeout function called too manny time 
 
       clearInterval(tabCycle); 
 
       tabCycle = setInterval(tabChange, 5000) 
 
      }, 15000); 
 
     }); 
 
    }); 
 
    
 
    // Tab-Pane change function 
 
    var tabChange = function(){ 
 
     var tabs = $('.nav-tabs > li'); 
 
     var active = tabs.filter('.active'); 
 
     var next = active.next('li').length? active.next('li').find('a') : tabs.filter(':first-child').find('a'); 
 
     next.tab('show') 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 

 
<ul class="nav nav-pills nav-tabs nav-stacked"> 
 
    <li class="active"><a href="#t1">Home</a></li> 
 
    <li><a href="#t2">Menu 1</a></li> 
 
    <li><a href="#t3">Menu 2</a></li> 
 
    <li><a href="#t4">Menu 3</a></li> 
 
</ul>