Nested jQuery tabs

前端 未结 3 1575
耶瑟儿~
耶瑟儿~ 2021-01-21 17:29

I\'m new to jQuery (a couple of weeks). I\'m trying to nest the jQueryUI tab control. It works fine until the nested tabs are in an external file then I get an exception thrown

相关标签:
3条回答
  • 2021-01-21 17:38

    If you are fetching the inner tabs through ajax, don't include a full html document and jquery, everything is being redefined in javascript and is conflicting.

    Simply remove the whole head, body, and html wrapper tags leaving the , and it should work.

    You also need to redefine the tabs when they it is loaded. Add a callback to the ajax tabs function -- (something like function ontabAJAX(){ if ($('.tab .active .innertabs').length)){ $('.tab .active .innertabs').removeClass('innertabs').addClass('tabbed').tabs() }).

    0 讨论(0)
  • 2021-01-21 17:39

    Once you called a innerTab page, all the HTML elements become rendered at once. You could be having issues with multiple copies of ID fields, such as "tabs"... The JQuery is referencing $("#tabs"), but there are two present.

    Can you please post the JQuery error?

    0 讨论(0)
  • 2021-01-21 17:47

    You are definitely running into a little bit of trouble with your duplicated 'Tabs' ID attribute. The following example should achieve what you're looking for:
    Main File (Outer Tab)

    <html>
    <head id="Head1" runat="server">
        <title></title>
        <link type="text/css" href="http://static.jquery.com/ui/themes/base/ui.base.css"
          rel="stylesheet" />
        <link type='text/css' href='http://static.jquery.com/ui/themes/base/ui.tabs.css'
          rel='stylesheet'>
        <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
        <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
        <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.tabs.js"></script>
    
    </head>
    <body>
      <div id="OuterTab">
        <ul>
          <li><a href="#InnerTab1" title="InnerTab1"><span>InnerTab1</span></a></li>
          <li><a href="#InnerTab2" title="InnerTab2"><span>InnerTab2</span></a></li>
        </ul>
        <div id="InnerTab1">   
        </div>
        <div id="InnerTab2">
        </div>
      </div>
          <script type="text/javascript">
            $(function() {
                $("#OuterTab").tabs();
                $('#InnerTab1').load('tab1.html', function() {
                  $('#tabs').tabs();
                });
                $('#InnerTab2').load('tab2.html', function() {
                  $('#tabs2').tabs();
                });
            });
        </script>
    </body>
    </html>  
    

    Tab 1 (tab1.html)

    <div id="tabs">
      <ul>
        <li><a href="#tabB1"><span>InnerTabB1</span></a></li>
        <li><a href="#tabB2"><span>InnerTabB2</span></a></li>
      </ul>
      <div id="tabB1">
        This is tab b1 content
      </div>
      <div id="tabB2">
        This is tab b2 content
      </div>
    </div>
    

    Tab 2 (tab2.html)

    <div id="tabs2">
      <ul>
        <li><a href="#tabA1"><span>InnerTabA1</span></a></li>
        <li><a href="#tabA2"><span>InnerTabA2</span></a></li>
      </ul>
      <div id="tabA1">
        This is tab A1 content
      </div>
      <div id="tabA2">
        This is tab A2 content
      </div>
    </div>
    

    This way, when you run your main file, the two tab files are requested via jQuery and loaded into the appropriate divs. Then I have defined a callback to activate the tabs that were just loaded.

    If you need more details just follow up with a comment.

    0 讨论(0)
提交回复
热议问题