2011-10-23 12 views
0

jQuery Cookie pluginをどのように使用してウェブサイト全体にわたって選択したタブを維持するか説明してください。ウェブサイト上の選択したタブを維持するためにjQuery 'cookie'を使用する

が ここ

がJSFiddleの形で私の現在のコードです:TAB2をクリックするとGoogleへのリンクがクリックされた場合http://jsfiddle.net/mcgarriers/RXkyC/

、私はまだ私がそのページに戻ったときにタブが開いたままにすることをしたいと思います。

誰かが私にこれを達成する方法を説明することはできますか?

私は参考のためにここに私のコードを添付した:任意のポインタのための

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Conforming XHTML 1.0 Strict Template</title> 

    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'></script> 

<script type="text/javascript"> 
$(function() { 
    var timeouts = [], 
     nTimeouts = 0; 
    // A helper function that allows multiple LI elements to be either 
    // faded in or out or slide toggled up and down 
    function fadeOutItems(ele, delay) { 
     var $$ = $(ele), $n = $$.next(); 
     // Toggle the active class 
     $$.toggleClass('active'); 
     // Clear any timeout's still waiting 
     while (nTimeouts--) { 
      clearTimeout(timeouts[nTimeouts]); 
     } 
     // Ensure the next element exists and has the correct nodeType 
     // of an unordered list aka "UL" 
     if ($n.length && $n[0].nodeName === 'UL') { 
      nTimeouts = $('li', $n).length; 
      $('li', $n).each(function(i) { 
       // Determine whether to use a fade effect or a very quick 
       // sliding effect 
       // cache this 
       var _this = $(this); 
       timeouts[i] = setTimeout(function() { 
        delay ? _this.fadeToggle('slow') : _this.slideToggle('fast'); 
       }, 400*i); 
      }); 
     } 
    } 
    // Retrieves the URL parameters from the window object and allows 
    // for custom query parameter requests by name 
    function getParameterByName(name) { 
     name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); 
     var regexS = '[\\?&]' + name + '=([^&#]*)'; 
     var regex = new RegExp(regexS); 
     var results = regex.exec(window.location.href); 
     if (results === null) { 
      return false; 
     } else { 
      return decodeURIComponent(results[1].replace(/\+/g, ' ')); 
     } 
    } 
    // This is the jQuery event that controls the click event for the 
    // tabs on the page by using a class to cut down on code 
    $('a', '.tabs').click(function(e) {  
     //e.preventDefault(); 
     $('.tabs ul li').hide(); 
     // Check on the other tabs, if the anchor link contains the 
     // class "active" fade out the UL list items 
     var $ca = $('a.active', '.tabs'); 
     if ($ca.length) { 
      // Check the currently selected tab against the one just clicked, 
      // if they are the same end the code right here! 
      if ($(this).parent().attr('id') === $ca.parent().attr('id')) { 
       return false; 
      } 
      fadeOutItems($ca, false); 
     } 
     fadeOutItems(this, true); 
    }); 
    // Check the URL query string, if a tab hash is present we can 
    // force the click event on the selected tab 
    // 
    // Eg. http://www.example.com/my-page.html#tab2 
    var query = getParameterByName('tab'); 
    if (query !== false) { 
     document.getElementById(query)[0].click(); 
    } 
}); 
</script> 

    <style type="text/css"> 
    body { 
    font-family: Arial; 
    font-size: 13px; 
    line-height: 16px; 
    } 

    .tabs a { 
     background-color: #dedede; 
     color: #565656; 
     display: block; 
     margin-bottom: 5px; 
     padding: 5px 8px; 
     text-decoration: none; 
    } 

    .tabs ul { 
     margin: 0 0 10px; 
     padding: 0; 
    } 

    .tabs li { 
     background-color: #eee; 
     border: 1px solid #ccc; 
     color: #1a1a1a; 
     display: none; 
     border-radius: 5px; 
     margin-bottom: 1px; 
     padding: 5px 10px; 
    } 
    </style> 

</head> 
<body> 

<div id="tabs"> 

    <div id="tab1" class="tabs"> 
    <a href="#" id="tab1link">Tab 1</a> 

     <ul> 
      <li>1</li> 
      <li>2</li> 
     </ul> 
    </div> 

    <div id="tab2" class="tabs"> 
     <a href="#" id="tab2link">Tab 2</a> 

     <ul> 
      <li>1</li> 
      <li>2</li> 
      <li>3</li> 
      <li><a href="http://www.google.com/">4</a></li> 
     </ul> 
    </div> 

</div> 

</body> 
</html> 

感謝を。

答えて

0

まず、タブをプログラムで選択できるようにするメカニズムを設計する必要があります。たとえば、jQuery UIのタブの実装では、これはselectメソッドで実現されます。現在選択されているタブを読む方法も必要です。例えば:

var selected = $tabs.tabs('option', 'selected'); 

次に、ページunloadイベントにクッキーで選択したタブの値を格納します。ページのロードイベントで、Cookieから値を読み取り、適切なタブを選択します。

+0

ありがとう、kgiannakakis。残念なことに私のJavascriptスキルは非常に悪いです。あなたが私にいくつかのサンプルコードを渡す可能性はありますか?とても感謝しております。 – michaelmcgurk

関連する問題