2012-08-09 16 views
1

活動標籤我有這個標籤系統:jQuery的設置從URL

$(document).ready(function(){ 
    $('#tabs div').hide(); 
    $('#tabs div:first').show(); 
    $('#tabs ul li:first').addClass('active'); 
    $('#tabs ul li a').click(function(){ 
     if($(this).parent().hasClass('active')) { 
      /** active **/ 
     } else { 
      $('#tabs ul li').removeClass('active'); 
      $(this).parent().addClass('active'); 
      var currentTab = $(this).attr('href'); 
      $('#tabs div').hide(); 
      $(currentTab).show('slide', {}, 500); 
     } 
     return false; 
    }); 
}); 

<div id="tabs"> 
     <ul> 
      <li><a href="#tab-1">1</a></li> 
      <li><a href="#tab-2">2</a></li> 
      <li><a href="#tab-3">3</a></li> 
      <li><a href="#tab-4">4</a></li> 
      <li><a href="#tab-5">5</a></li> 
     </ul> 

     <div id="tab-1"> 
Content tab1 
</div> 
<div tab2... etc 

如果我添加#標籤-3在URL的末尾,它應該全自動顯示和設置選項卡3個活動無我有點擊它。

這是可能的一個簡單的方法?

+1

如果你申請的代碼$( '#DIV標籤:第一')顯示()。和$('#tabs ul li:first')。addClass('active');每次文檔準備就緒時,不管你的網址是什麼,你是不是要顯示第一個標籤? – Matt 2012-08-09 19:06:51

回答

4

看你的代碼之後,還編輯 -

,如果你在這兩條線路每次DOM已準備就緒,你總是會看到,第一個選項卡的代碼。

$('#tabs div:first').show(); 
$('#tabs ul li:first').addClass('active'); 

在決定是否顯示第一個標籤之前,您必須首先檢查'#tab'的網址。

$(function(){ 
    ... 
    var hash = window.location.hash; 
    if(hash){ 
     $('a[href="' + hash +'"]').parent('li').addClass('active'); 
     var elementID = hash.replace('#', ''); 
     $(elementID).show(); 
    } else { 
     $('#tabs div:first').show(); 
     $('#tabs ul li:first').addClass('active'); 
    } 
    ... 
} 
+0

非常感謝。它效果很好。這是最終的代碼:http://pastebin.com/G3x7D1ET – medusa1414 2012-08-09 20:37:03

2

這也許應該工作:

$(window).bind('hashchange', function(event) { 
    var hash=window.location.hash; 
    if(!hash){return;} 
    $('a[href="'+hash+'"]').click(); 
});​ 
$(window).trigger('hashchange'); 
+0

嗯,它的工作原理。但關鍵是我可以鏈接另一個站點/文件的選項卡。如果我打開一個新標籤,粘貼mysite.com/t#tab-3它顯示第一個標籤。如果我再次輸入(當站點被加載時)它加載標籤-3。有沒有直接加載標籤的方法? – medusa1414 2012-08-09 18:43:15

+0

你把這個放在文檔就緒函數裏面嗎? – orhanhenrik 2012-08-09 18:46:00

+0

是的。嘗試在 – medusa1414 2012-08-09 18:48:04