2009-03-01 57 views
9

我在我的项目中使用jQuery库。我有jquery选项卡的可怕问题。解决方法是,当我在第三个选项卡时,我发回我的表单,选项卡重新加载并转到第一个选项卡。 我正在寻找解决问题很长时间。jquery选项卡回发问题

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#example > ul").tabs({ remote: true, cache: true }); 
    });  
</script> 

那么我该如何解决这个问题? thx你的答案。

回答

13

选项卡可以使用cookie来存储当前选项卡。看看标签documentation。相传在选项列表中存在的如何使用Cookie存储当前选项卡的例子:

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

这就要求jquery cookies plugin虽然被包括在内。

+0

对我来说,这是实现最好和最简单的解决方案。我在三个不同的页面上有许多选项卡,并且选项卡在选项卡点击和页面回发中保持其状态。真棒。 – 2011-07-28 12:40:46

+0

啊,这看起来像一个完美的解决方案,我有一个问题,我用标签中的部分视图...不幸的是,由于广告垃圾邮件发送者的攻击,jquery网站被删除,链接到标签文档和jQuery Cookie插件现在不可用... – Dronz 2012-09-19 18:43:10

24

没有指定,如果你正在使用ASP.NET,但如果你是,你可以存储在一个< ASP当前选中的标签:HiddenField/>,而不是一个cookie:

<script type="text/javascript" language="javascript"> 
    $(function() { 
     $("#example").tabs({ 
      show: function() { 
       var sel = $('#example').tabs('option', 'selected'); 
       $("#<%= hidLastTab.ClientID %>").val(sel); 
      }, 
      selected: <%= hidLastTab.Value %> 
     }); 
    }); 
</script> 
<asp:HiddenField runat="server" ID="hidLastTab" Value="0" /> 

如果不是ASP.NET,你可以做类似的事情。

+1

这个解决方案完美地为我使用ASP.net谢谢! – 2009-11-10 13:56:37

0

我有同样的问题,通过添加以下对jQuery的标签就是事件处理程序固定:

$("div.ui-tabs-panel").html(""); 

,有效地清除所有现有的面板,防止形式堆叠。

1

我试图使用joelsand发布的解决方案。但是,jQuery选项卡选项和事件已更改。目前的文档是http://api.jqueryui.com/tabs/

而不是“show”事件,我使用“激活”事件。 取而代之的是“选择”选项,我使用了“主动”选项。我使用了一个JavaScript变量(在U​​pdatePanel之外声明)