2011-04-18 17 views
2

jQueryのタブで作業するのが初めてで、特定のタブに直接リンクする機能を追加できます外側。基本的にはすべてのタブの内容が表示されますが、実際のタブはアクティブにならず、クリックすると表示されます。私はタブの背景画像を設定しています。これは私のCSSのようなものですリンクにハッシュタグがある場合、アクティブなクラスをli要素に追加し、li要素をアクティブにします。

ul.tabs li a.tab-1 {background-position:0 0;} 
ul.tabs li a.tab-1:hover {background-position:0 -61px;} 
ul.tabs li.active a.tab-1 {background-position:0 -125px;} 

外部ソースからリンクに送信されたときにアクティブクラスは表示されません。ここで

<ul class="tabs"> 
    <li class="active"><a class="tab-1" href="#tab-1">history</a></li> 
    <li><a class="tab-2" href="#tab-2">About</a></li> 
</ul> 

は、jQueryのコードの残りの部分である:../../#tab-1 がアクティブに李を設定し、活性状態を示します。

$(document).ready(function() { 
    //Default Action 
    $(".tab_content").hide(); //Hide all content 
    if(location.hash != "") { 
    /* If there is a tab id in the page URL */ 
    $(location.hash).show(); //Show tab content 
    $('ul.tabs li:has(a[href="location.hash"])').addClass("active").show(); //Activate tab 
    $(this).find("a").addClass("active"); //Add "active” class to href inside selected 
    } else { 
    $("ul.tabs li:first").addClass("active").show(); //Activate first tab 
    $(".tab_content:first").show(); //Show first tab content 
    } 
    //On Click Event 
    $("ul.tabs li").click(function() { 
    $("ul.tabs li").removeClass("active"); //Remove any "active" class 
    $(this).addClass("active"); //Add "active" class to selected tab 
    $(".tab_content").hide(); //Hide all tab content 
    var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab content 
    location.hash = activeTab //Add the anchor to the url (for refresh) 
    $(activeTab).fadeIn(); //Fade in the active ID content 
    return false; 
    }); 
}); 

私が達成しようとしているどのようなURLが特定の場所を持っている場合でありますli要素。

+0

を支援(私は '.tab_content {display:none;}スタイルを追加し、'

this is tab 1
'のようなタブを作成しました)。私は、ページを読み込んだ後、ブラウザバーのURLを#tab-1から#tab-2に手動で変更し、Enterキーを押してもタブ2は表示されないことに気付きました。しかし、コピーして貼り付けると#tab-2 URLを新しいブラウザウィンドウに追加すると、それは機能します。ブックマークからも動作します。 (BTW、この行の最後にセミコロンがない: 'location.hash = activeTab') – Jeff

+0

別のページから直接#tab-2にリンクするときにも機能します。 – Jeff

+0

それをキャッチするためにありがとう... – MRC

答えて

0

あなたは、クリックイベントをシミュレートすることができます。

$(document).ready(function() { 
    //create tab widget before the following code is executed 
    $(".tab_content").hide(); //Hide all content 
    if(location.hash != "") { 
    $(location.hash).show(); //Show tab content 
    $('ul.tabs li:has(a[href="'+location.hash+'"])').click(); //LINE CHANGED 
    } else { 
    $("ul.tabs li:first").click(); //LINE CHANGED 
    } 
... your code continues here 

はまた、あなたの持っている内部エラーが発生しました(あなたはlocation.hach変数をCONCATを忘れてしまった) 希望、これはこのコードのように私の作品

関連する問題