jQuery选项卡。 。 。我需要做到这一切! (MouseOver,从选项卡单击导航并根据页面选择选项卡)

时间:2010-01-06 13:50:15

标签: jquery navigation tabs default-selected

在阅读了所有jQuery doc,SO问题和随机博客后,我一直无法找到问题的答案。

目前我正在将Coldfusion网站移植到.Net网站。在我的网站母版页中,我拥有所有导航元素,因为它只是网站的管理部分。

导航html代码:

<div id="tabs" class="basictab">
                    <ul>
                        <li><a href="#fragment-1"><span>Insurance Plans</span></a></li>
                        <li><a href="#fragment-2"><span>Mini-Sites</span></a></li>
                        <li><a href="#fragment-3"><span>Independent Sites</span></a></li>
                        <li><a href="#fragment-4"><span>Tools</span></a></li>
                    </ul>

                    <div id="fragment-1" class="tabcontainer">
                        <nav:insurance runat="server" ID="ins1" Visible="true" />
                    </div>
                    <div id="fragment-2" class="tabcontainer">
                        <nav:mini runat="server" ID="mini1" Visible="true" />
                    </div>
                    <div id="fragment-3" class="tabcontainer">
                       <div>
                    <div id="fragment-4" class="tabcontainer">
                      <nav:tools runat="server" ID="tools2" Visible="true" />
                    </div>
                </div>

在我的标题 OF MY MASTER PAGE

<script type="text/javascript" >
  $(document).ready(function(){
    $("#tabs").tabs({event: 'mouseover'});
  });
    </script>

您可以告诉该网站有4个(实际上是3个)主要部分:保险计划,迷你网站,独立网站和工具。在这些部分中的每一部分下都有几个页面(所有页面都使用相同的母版页)。

鼠标悬停功能效果很好,div隐藏并按预期显示。我遇到的问题是每个部分的每个页面都选择div id="fragment-1"。 (例如,在工具部分div id="fragment-4"中,我需要选择它。我已经尝试在.aspx页面的头部和主页中添加$('#tabs').tabs('option', 'selected', 3);以进行测试另外我尝试将$('#tabs').tabs('option', 'selected', 3);抛入$(document).ready函数,但它仍会在.aspx页面和母版页中引发错误。

解决上述问题: 放置

<script type="text/javascript" >
$(document).ready(function(){
    var $tabs = $("#tabs").tabs({event: 'mouseover'});
    $tabs.tabs("select", 3);
  });
    </script>

在“3”部分的页面末尾允许默认选择相应的选项卡。

删除时:

<script type="text/javascript" >
$(document).ready(function(){
    var $tabs = $("#tabs").tabs({event: 'mouseover'});
   });
    </script>

来自母版页的标题。

最重要的是,我需要可点击的标签进行导航(不是ajax加载,但我需要用户,当点击标签进入不同的页面时。我会认为这将是类似于window.location()。

任何人都可以帮助第二部分吗?我是一个jQuery n00b。

3 个答案:

答案 0 :(得分:2)

对于第一部分,您可以执行karim79建议的操作,并尝试确定它是什么页面并相应地设置默认值。

在设置选项卡之前:

var path = window.location.pathname.split('/'); // This will give you an 
                                                // array of the parts of the url

var defaultTab;  // Initialize the default tab variable 

// Just as an example, let's imagine your urls look like this:
// administration/mini-site
switch ( path[1] ) // Path[0] is 'administration' in this example
{
   case 'mini-site':
      defaultTab = 1; // The number to pass as the default
   break;

   case 'insurance-plans':
      defaultTab = 5; 
   break;   

// etc. etc. etc. 
// A case for each individual page
}

然后你可以这样做:

 var $tabs = $("#tabs").tabs({event: 'mouseover'});
    $tabs.tabs("select", defaultTab);

现在针对第二个问题: 如果我理解正确,您希望人们点击选项卡的名称并重定向? 这可以通过绑定click事件来完成。 您必须先为导航中的每个A分配一个ID:

<li><a href="#fragment-1" id="insurance"><span>Insurance Plans</span></a></li>
<li><a href="#fragment-2" id="minisites"><span>Mini-Sites</span></a></li>

然后创建一个将获取该ID并决定将用户发送到何处的函数:

function redirect(e)
{
    var id = $(this).attr('id');

    switch (id)
    {
        case 'minisites':
            window.location = 'http://www.something.com/administration/mini-sites';
        break;

        case 'insurance':
            window.location = 'http://www.something.com/administration/insurance';
        break;
        //etc etc etc
    }
}

然后将其绑定到a:

$('#tabs a').bind('click', redirect);

(虽然我没有测试任何一个:P)

答案 1 :(得分:0)

你试过了吗?

  $(document).ready(function(){
    var $tabs = $("#tabs").tabs({event: 'mouseover'});
    $tabs.tabs("select", 3);
  });

答案 2 :(得分:0)

.tabcontainer:not(:target) { display: none; }