2012-05-20 133 views
0

我使用jquery选项卡,并试图在每个分页中,一切正常,但是,如果我点击去下一页说第二个选项卡,它会它很好,但将我传输到第一个标签页打开,所以你必须不断点击第二个标签页来查看新的内容。我的问题是,我怎样才能做到这一点,以便当用户点击分页中的下一页时,内容会刷新,但同一个标签页仍处于打开状态。jquery选项卡保持选项卡打开,这是subid在url

我如何纳入我当前的代码这一计划是使用URL mail.php?page=2&tid=2

凡页= 2是工作正常的分页参考,但我想要的TID(标签ID),使它所以这个标签是开放的。

下面是标签的JavaScript,你可能会认识到它

$(document).ready(function() { 

    //Default Action 
    $(".tab_content").hide(); //Hide all content 
    $("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 rel attribute value to identify the active tab + content 
     $(activeTab).fadeIn(); //Fade in the active content 
     return false; 
    }); 

}); 

而对于标签的HTML(不得不注释掉的列表)

//<div id="tabsX"> <div id="tabContent"> <ul class="tabs"> 
    // <!--<li><a id="all" href="#all" class="all">All</a></li>--> 
    // <li><a href="#inbox" class="inbox"></a></li> 
    // <li><a href="#outbox" class="outbox"></a></li> 
    // <li><a href="#compose" class="compose"></a></li> 
    //<li><a href="#trash" class="trash"></a></li> 
    // 

    // </ul> 

和选项卡的HTML内容(仅显示一个作为没有内容的示例,因为将显示太多)

<div id="inbox" class="tab_content"> 
     <div id="inbox_header" style="display:table-cell; vertical-align:middle"> 
     <!---content--->   

     </div><!---end inbox_content---> 



</div><!---end inbox---> 

我会很感激的任何帮助,因为我似乎无法找到任何解决方案,为自己

回答

2

您可以使用下面的函数从heretid PARAM在JavaScript

然后改变像你的代码这

var tabIndex = parseInt(getParameterByName('tid'),10); 
$("ul.tabs li").eq(tabIndex - 1).addClass("active").show(); //Activate first tab 
$(".tab_content").eq(tabIndex - 1).show(); //Show first tab content 

所以你完全js代码将是

function getParameterByName(name) 
    { 
     name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
     var regexS = "[\\?&]" + name + "=([^&#]*)"; 
     var regex = new RegExp(regexS); 
     var results = regex.exec(window.location.search); 
     if(results == null) 
     return ""; 
     else 
     return decodeURIComponent(results[1].replace(/\+/g, " ")); 
    } 
$(document).ready(function() { 

    //Default Action 
    $(".tab_content").hide(); //Hide all content 

    var tabIndex = parseInt(getParameterByName('tid'),10); 
    if(!tabIndex) 
     tabIndex = 1; 
    $("ul.tabs li").eq(tabIndex - 1).addClass("active").show(); //Activate first tab 
    $(".tab_content").eq(tabIndex - 1).show(); //Show first tab content 

    //On Click Event 
    // add you onlick code here 


)}; 

我在eq中加入-1,因为它是0-based。在这里检查文档$.eq

+0

好的很好,但是快速的问题你说改变代码,你的意思是完全用你提供的代码替换整个代码,或者只是改变不同的部分? – Arken

+0

用完整的代码稍候更新答案。 –

+0

它工作吗?让我知道 –

0

我会建议看一下jquery选项卡的文档。您可以使用多种选项。 cookie的选项:

$(".selector").tabs({ cookie: { expires: 30 } }); 

存储在cookie中的最新选择的选项卡。如果未定义所选选项,则Cookie将用于确定最初选定的选项卡。需要cookie插件,该插件也可以在下载构建器的开发包>外部文件夹中找到。该对象需要cookie插件期望的形式的键/值对作为选项。可用选项(示例):{expires:7,path:'/',domain:'jquery.com',secure:true}。由于jQuery UI 1.7也可以通过name属性来定义正在使用的cookie名称。

此外,您可以使用选定的选项。这让你指定要在初始化时打开什么标签:

$(".selector").tabs({ selected: 3 }); 

第三个选项是通过Ajax调用加载选项卡的内容来代替。

+0

我应该补充说,需要提供“选择”选项中的3。您将问题标记为具有PHP,因此您可以用<?php echo isset($ _ GET ['tid'])?$ _ GET ['tid']替换3: - 1; ?> – Recognizer

相关问题