代码之家  ›  专栏  ›  技术社区  ›  Paul

jquery选项卡中的用户界面一致性

  •  26
  • Paul  · 技术社区  · 15 年前

    我在标签中使用手风琴遇到问题,最初不活动的手风琴在选择标签时无法正确呈现其内容。 在我的阅读中,我看到了这样做的原因:不活动的选项卡有显示:最初没有显示,所以手风琴中的分隔高度无法正确计算。所有建议的解决方案都不适合我。 是否有人克服了这一点,或者有人在附近工作?

    下面是问题的一些示例代码:

    <!DOCTYPE html>
    <html>
    <head>
      <link rel="stylesheet" type="text/css" href="../css/jquery-ui-1.7.2.custom.css" media="screen" />
      <script type='text/javascript' src='../scripts/jquery-1.3.2.min.js'></script>
      <script type='text/javascript' src='../scripts/jquery-ui-1.7.2.custom.js'></script> 
    
      <script type="text/javascript">
      $(document).ready(function(){
        $('#tabs').tabs();
        $("#accordion1").accordion();
        $("#accordion2").accordion(); 
      });
      </script>
    </head>
    <body style="font-size:62.5%;">
       <div id="main" class="round roundB">
    
    <div id="tabs">
      <ul>
        <li><a href="#tab1">Tab 1</a> </li>      
        <li><a href="#tab2">Tab 2</a> </li>
      </ul>
    
    <div id="tab1">
      <div id="accordion1">
     <h3><a href="#">Section 1</a></h3>
     <div>
      <p>
      TAB 1 Accordion 1
      </p>
     </div>
     <h3><a href="#">Section 2</a></h3>
     <div>
      <p>
      TAB 1 Accordion 2
      </p>
     </div>
      </div>
    </div>
    
    <div id="tab2">
      <div id="accordion2">
     <h3><a href="#">Section 1</a></h3>
     <div>
      <p>
      TAB 2 Accordion 1
      </p>
     </div>
     <h3><a href="#">Section 2</a></h3>
     <div>
      <p>
      TAB 2 Accordion 2
      </p>
     </div>
      </div>
    </div>
    </div>
    
    </div>
    </body>
    </html>
    
    7 回复  |  直到 11 年前
        1
  •  56
  •   castocolina    15 年前

    我以前也遇到过同样的问题。 解决方法是:你必须在标签前激活手风琴。

    $("#accordion").accordion();
    $("#tabs").tabs();
    

    也许你需要左对齐。

    .ui-accordion-header{
      text-align: left;
    }
    

    祝你好运

        2
  •  8
  •   user261939    14 年前

    在阅读了所述问题之后,我的印象是我遇到的问题具有类似的性质。在一个标签中使用手风琴功能迫使我的手风琴内容包含一个滚动条,这是我不想要的功能。

    由于某种原因,当前提供的解决方案对我来说不起作用。

    我找到的解决方案是覆盖autoheight的默认Accordion设置(默认为true,覆盖为false)

    $("#accordion").accordion({
        autoHeight: false
    });
    $('#tabs').tabs();
    
        3
  •  1
  •   jmav    15 年前

    激活选项卡时初始化手风琴:

    样品:

    $('.selector').bind('tabsadd', function(event, ui) {
      ...
    });
    

    你的样品:

      <script type="text/javascript">
        $(document).ready(function(){
            $('#tabs').tabs();
        $('#tabs').bind('tabshow', function(event, ui) {
            $("#accordion1").accordion();
            $("#accordion2").accordion(); 
        });
    
      });
      </script>
    

    也许您需要为每个选项卡初始化每个特殊的手风琴。

    或者使用最新的UI库:

        <link rel="stylesheet" href="http://static.jquery.com/ui/css/base2.css" type="text/css" media="all" />
            <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/ui-lightness/jquery-ui.css" type="text/css" media="all" />
            <link rel="stylesheet" href="http://static.jquery.com/ui/css/demo-docs-theme/ui.theme.css" type="text/css" media="all" />
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
            <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script>
            <script src="http://jquery-ui.googlecode.com/svn/tags/latest/external/bgiframe/jquery.bgiframe.min.js" type="text/javascript"></script>
            <script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/minified/i18n/jquery-ui-i18n.min.js" type="text/javascript"></script>
    
        4
  •  1
  •   Brant Messenger    13 年前
        $( "#tabs" ).tabs({
            load: function(event, ui) {
                $("#"+ui.panel.id+" .accordians:first").accordion();
            }
        });
    

    这在使用带有标签的Ajax HTML时很有效。

        5
  •  1
  •   Chuck Schneider    11 年前

    以上都不适合我。对我来说,诀窍是从对每个手风琴使用唯一的DIV ID改为对所有手风琴使用单个类标识。也就是说,改变: <div id="accordion1>, <div id="accordion2>, 等。。。到 <div class="accordion"> 在每个选项卡中。

    您可能还需要添加到您的$(document).ready函数中。

    $(".accordion").accordion({
          autoHeight: false
      });
    
      $('#tabs').tabs();
      $('#tabs').bind('tabshow', function(event, ui) {
          $(".accordion").accordion("resize");
          });
    

    所以格式应该是:

    <!DOCTYPE html>
    <html>
    <head>
      <link rel="stylesheet" type="text/css" href="../css/jquery-ui-1.7.2.custom.css" media="screen" />
      <script type='text/javascript' src='../scripts/jquery-1.3.2.min.js'></script>
      <script type='text/javascript' src='../scripts/jquery-ui-1.7.2.custom.js'></script> 
    
      <script type="text/javascript">
      $(document).ready(function()
      {
          $(".accordion").accordion({
                autoHeight: false
          });
    
          $('#tabs').tabs();
          $('#tabs').bind('tabshow', function(event, ui) {
              $(".accordion").accordion("resize");
          });
      });
      </script>
    </head>
    <body style="font-size:62.5%;">
    <div id="tabs">
        <ul>
            <li><a href="#tabs-1">User</a></li>
            <li><a href="#tabs-2">Folders</a></li>
            <li><a href="#tabs-3">Decks</a></li>
        </ul>
        <div id="tabs-1">
            <div class='accordion'>
                <h3>Header 1</h3>
                <div</div>  
                <h3>Header 2</h3>
                <div></div> 
                <h3>Header 3</h3>
                <div><</div> 
            </div>
        </div>
        <div id="tabs-2">
            <div class='accordion'>
                <h3>Header 4</h3>
                <div</div>  
                <h3>Header 5</h3>
                <div></div> 
                <h3>Header 6</h3>
                <div><</div> 
            </div>
       </div>
       <div id="tabs-3">
            <div class='accordion'>
                <h3>Header 7</h3>
                <div</div>  
                <h3>Header 8</h3>
                <div></div> 
                <h3>Header 9</h3>
                <div><</div> 
            </div>  
       </div>
    </div>
    
    </body>
    </html>
    
        6
  •  0
  •   user965445    13 年前

    http://bugs.jqueryui.com/ticket/5601

    .ui helper clearfix显示:块;最小宽度:0;溢出:隐藏;

        7
  •  -1
  •   user188878    15 年前

    仔细阅读 http://docs.jquery.com/UI/Tabs# 有一个答案。这是最简单的方法