如何在jquery选项卡的当前活动选项卡上触发('单击')

时间:2012-05-24 10:12:55

标签: javascript jquery events jquery-ui-tabs eventtrigger

我有一个标签屏幕,想要在提交表单并且返回有效后触发所选标签上的点击。这里是html的一部分:

<ul id="tabUL" class="tabs js-tabs same-height">
    <li class="current">
        <a class="tabLink" href="#tabProducts" data-url="/bla/bla">Products</a>
    </li>
</ul>

我的成功命令是:

success: function(data, textStatus, XMLHttpRequest) {
    $('#tabUL').find('li.current a').trigger('click');
}

这似乎不起作用......感谢任何帮助:)问候Andrea

3 个答案:

答案 0 :(得分:26)

尝试使用a[href=""]选择器:

$('#tabUL a[href="#tabProducts"]').trigger('click');


我整理了一个jsfiddle demo以显示它的运行情况,以及如何选择性地隐藏其他标签,因为我经常以编程方式强制标签要求在解锁其他标签之前在初始标签页上输入缺少的必填信息。 ..

修改 以下是jsfiddle的内容:

HTML

<div id="tabs">
  <ul>
    <li><a href="#tab0">Address</a></li>
    <li><a href="#tab1">Shipping</a></li>
    <li><a href="#tab2">Parts</a></li>
    <li><a href="#tab3">Datasheets</a></li>
  </ul>
  <div id="tab0">
        <h1>This is the first tab (0)</h1>
  </div>
  <div id="tab1">
     <h1>This is the second tab (1)</h1>
  </div>
  <div id="tab2">
     <h1>This is the third tab (2)</h1>
  </div>
  <div id="tab3">
     <h1>This is the fourth tab (3)</h1>
  </div>
</div>
<br/>
Select the
<select id="tabSelect">
  <option value="0">1st</option>
  <option value="1">2nd</option>
  <option value="2">3rd</option>
  <option value="3">4th</option>
</select>Tab and
<input type="checkbox" id="tabHide" checked="checked" /> Lock the Others

的jQuery

$(document).ready(function () {
  $('#tabs').tabs();
  $('#tabSelect').change(function () {
        //pass empty array to unlock any locked tabs
    $('#tabs').tabs({disabled: []}).find('a[href="#tab' + $(this).val() + '"]').trigger('click');

    if ($('#tabHide').prop('checked')) {
      //hide will be an array like [0,2,3]
      var hide = Array();
      $('#tabs li').not('.ui-tabs-active').each(function () {
        hide.push($(this).index());
      });      
      $('#tabs').tabs({disabled: hide});
    }
  });
});

答案 1 :(得分:4)

如果您想以编程方式重新加载选项卡,那么我建议使用如下所示的Jquery Tab API实用程序: 这使得第一个选项卡处于活动状态,然后激活第二个选项卡,非常简单,并且还会引发直接单击时通常会引发的事件。

$( "#myTabs" ).tabs( "option", "active", 0 );

$( "#myTabss" ).tabs( "option", "active", 1 );

此外,您还可以捕获下面的标签活动事件以执行任何操作

$( "#myTabs" ).on( "tabsactivate", function( event, ui ) {
    // your custom code on tab click
});

答案 2 :(得分:0)

而不是尝试触发click事件本身(我认为不可能在此上下文中以编程方式调用用户事件),我建议你触发必须在click事件上调用的函数,你可能想要看看triggerHandler