【问题标题】:JQuery Nested Tab - not first child is selected on click of parent tabJQuery嵌套选项卡-单击父选项卡时未选择第一个孩子
【发布时间】:2013-03-18 21:28:28
【问题描述】:

我创建了嵌套选项卡。样本端结构如下: 注意:““_1”是使用 foreach 动态添加的。因此所有子 div 都是使用服务器返回的值动态创建的。”

    <div id="tabs">

      <ul id="tablinks">
      <li><a href="#childtab_1">First Parent</a></li>
      <li><a href="#childtab_2">Second Parent</a></li>
      </ul>


    <div id="childtab_1">
       <div id="ct_1">
        <ul id="childTabLinks_1">
        <li><a href="#childtabs-11">First Nested Tab</a></li>
        <li><a href="#childtabs-12">Second Nested Tab</a></li>
        </ul>
        <div id="childtabs-11"><p>First child content</p>
        </div>
        <div id="childtabs-12"><p>Second child content</p>
        </div>
    </div>   

    <div id="childtab_2">   
    .
    .
    </div> 

    In Java Script:   
    $('#tabs').tabs();
    $('#childtabs_1').tabs(
    //getting data using ajaxOptions
    );
    $('#childtabs_2').tabs(
    //getting data using ajaxOptions
    );

考虑在父级 1 下 - 单击第二个子级。如果我单击父 2,然后返回父 1,则仍然选择第二个孩子。我希望每次单击父选项卡时都应选择第一个子项。

我阅读了其他帖子 - 并尝试使用

  1. 锚元素上的点击功能。 喜欢

    $('#tabs ul li a').click(function(){
       var parent = $('#tabs').tabs();
       $parent.tabs('select',0);
    });
    

    它不工作。

  2. 尝试在 tabselect 上使用绑定。它会导致事件气泡并且也不起作用。

    $('#tabs').bind(
            'tabsselect', 
            function(event, ui) {
                $("#tabLinks li a").on("click", function () { 
                    $('#childTabLinks_0 li a').first().trigger("click"); 
                });     
            }
    ); 
    

如果有解决方案可以在选择父母时自动选择第一个孩子,请分享。

【问题讨论】:

  • $parent 没有在任何地方声明,你只是将 parent 声明为变量。

标签: jquery tabs nested jquery-ui-tabs jquery-tabs


【解决方案1】:

你不需要 tabselect 函数中的 click 函数:

$('#tabs').bind(
    'tabsselect',
        function() {
            $(this).children('.child-tabs').tabs('select',0);
        }
    }
); 

<div id="childtab_1">
   <div id="ct_1">
      <ul id="childTabLinks_1" class="child-tabs">
      ...

【讨论】:

  • 感谢您的回复。我想念这个 - “1”是使用 foreach 动态添加的。因此,所有子 div 都是使用服务器返回的值动态创建的。不能仅添加此“ class="child-tabs" ”来识别第一个孩子。 1. 我尝试使用给定的“.child-tabs”类 - 但它没有用。 2. 我更新了它并尝试使用 div 通配符 - 没用。 $('#tabs').tabs({ select: function(event, ui) { $('#tabs').children("[id^=ct]").tabs('select', 0); } });
  • 3.还在 tabselect 上进行绑定 - 导致事件冒泡。这样,如果您单击一个子项 - 事件会冒泡到父项,并且绑定内的代码正在执行。虽然我的问题仍然存在。通过 pt-2 执行 - 在选项卡初始化期间提及它本身并没有执行事件气泡。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多