2012-03-26 8 views
2

Vielleicht ist dies nicht so schwer zu tun, aber keine von JS Hintergrund so schwer für mich zu verstehen. Ich versuche, den ausgewählten Tab im Cookie zu speichern. Wenn die Seite also aktualisiert wird, wird der ausgewählte Tab früher angezeigt.Jquery Tabs Cookie Verwendung vorhanden Skript

Ich verwende bereits Listenraster Layout für meine Website und auch Cookie gesetzt und funktioniert gut. Ich poste Cookie-Code, den ich dafür verwende, sowie meine Tabs html und Javascript auch.

List/Grid Cookie-JS

$(function() { 
     var cc = $.cookie('list_grid'); 
     if (cc == 'g') { 
      $('#listgrid').addClass('grid'); 
      $('#grid').addClass('current');    
     } else { 
      $('#listgrid').removeClass('grid'); 
      $('#list').addClass('current'); 
     } 
    }); 

$(document).ready(function() { 

    $('#grid').click(function() { 
     $(".current").removeClass("current"); 
     $(this).addClass("current"); 

     $('#listgrid').fadeOut(500, function() { 
      $(this).addClass('grid').fadeIn(500); 
      $.cookie('list_grid', 'g'); 
     }); 
     return false; 
    }); 

    $('#list').click(function() { 
     $(".current").removeClass("current"); 
     $(this).addClass("current"); 

     $('#listgrid').fadeOut(500, function() { 
      $(this).removeClass('grid').fadeIn(500); 
      $.cookie('list_grid', null); 
     }); 
     return false; 
    }); 

}); 

Meine Tabs HTML

  • Tab 1
  • Tab 2
  • Tab 3
  • <div class="tabs"> 
    
        <div id="tab1" class="tab"> 
        </div> 
    
        <div id="tab2" class="tab"> 
        </div> 
    
        <div id="tab3" class="tab"> 
        </div> 
    </div> 
    

    Tabs JS jQuery (document) .ready (function() {// wenn dies nicht der erste Reiter ist, versteckt es jQuery ("tab: nicht. (: First)".) Verstecken();

    //to fix u know who 
        jQuery(".tab:first").show(); 
    
        //when we click one of the tabs 
        jQuery(".htabs a").click(function() { 
    
         $(".current").removeClass("current"); 
         $(this).addClass("current"); 
    
         //get the ID of the element we need to show 
         stringref = jQuery(this).attr("href").split('#')[1]; 
         //hide the tabs that doesn't match the ID 
         jQuery('.tab:not(#' + stringref + ')').hide(); 
         //fix 
         if (jQuery.browser.msie && jQuery.browser.version.substr(0, 3) == "6.0") { 
          jQuery('.tab#' + stringref).show(); 
         } else 
         //display our tab fading it in 
         jQuery('.tab#' + stringref).fadeIn(); 
         //stay with me 
         return false; 
    
        }); 
    
    }); 
    

    So kann mir bitte jemand helfen, dies zu tun.

    +0

    sind Sie jQuery UI versuchen, Ihre eigenen Registerkarten zu schreiben oder bestehende verwenden? – Elen

    +0

    Was ich tun möchte, ist, dass ich ein Cookie-Skript verwende, das von jedem Tutorial für List/Grid-Layout heruntergeladen wurde. Siehe http://www.ssdtutorials.com/tutorials/series/list-grid-view-jquery-cookies.html. Daher möchte ich dasselbe Cookie-Skript für meine Tabs-Benutzeroberfläche verwenden. Ich weiß nicht, ob es möglich ist oder nicht –

    Antwort

    1

    Ich denke, Ihr besser dran mit der jQuery UI Tabs für this

    jQuery(document).ready(function() { 
    
    // get the cookie 
    var tabcookie = $.cookie('tab');  
    if (tabcookie){ 
        jQuery('.tab:not(#' + tabcookie + ')').hide(); 
        jQuery('.tab#' + tabcookie).show();  
    }else{ 
         jQuery(".tab:not(:first)").hide(); 
    
        //to fix u know who 
        jQuery(".tab:first").show(); 
    } 
    
    
    //when we click one of the tabs 
    jQuery(".htabs a").click(function() { 
    
        $(".current").removeClass("current"); 
        $(this).addClass("current"); 
    
        //get the ID of the element we need to show 
        stringref = jQuery(this).attr("href").split('#')[1];   
        //hide the tabs that doesn't match the ID 
        jQuery('.tab:not(#' + stringref + ')').hide(); 
    
        // save the cookie 
        $.cookie('tab', stringref); 
    
    
        //fix 
        if (jQuery.browser.msie && jQuery.browser.version.substr(0, 3) == "6.0") { 
         jQuery('.tab#' + stringref).show(); 
        } else 
        //display our tab fading it in 
        jQuery('.tab#' + stringref).fadeIn(); 
        //stay with me 
        return false; 
    
    }); 
    

    });

    +0

    Ich habe es versucht, aber irgendwie hat es nicht funktioniert, da HTML Markup etwas anders ist als mein. –

    +0

    Ich habe versucht, Ihren Code, aber es nicht sogar meine div all div Display zur gleichen Zeit verstecken :(Wenn Sie wollen, kann ich Ihnen meine alle Dateien, wenn Sie etwas meine Schuld finden können. –

    +0

    Ich denke, Sie sind in der Nähe, wollte ich nur um zu zeigen, dass Sie die Registerkarte # in einem Cookie (ich benannte "Tab") auf dem Tab-Click-Ereignis speichern sollten, dann können Sie auf das Cookie beim Laden des Dokuments (jQuery (document) .ready) verweisen, um zu entscheiden, welche Registerkarte Sie gehen –