タブ付きの画面があり、フォームが送信されて戻り値が有効になったら、選択したタブのクリックをトリガーしたい。ここに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');
}
これは機能していないようです...助けていただければ幸いです:)よろしくアンドレア
a[href=""]
セレクターを使用してみてください:
$('#tabUL a[href="#tabProducts"]').trigger('click');
jsfiddle demo を組み合わせて実際に表示し、オプションで他のタブを非表示にする方法を示します。他のタブのロックを解除する前の最初のタブ...
Editこれが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});
}
});
});
プログラムでタブを再読み込みする場合は、以下のようなJqueryタブAPIユーティリティを使用することをお勧めします。これにより、最初のタブがアクティブになり、次に2番目のタブがアクティブになります。非常に単純で、直接クリックしたときに通常発生するイベントも発生します。
$( "#myTabs" ).tabs( "option", "active", 0 );
$( "#myTabss" ).tabs( "option", "active", 1 );
また、次のようなタブのアクティブイベントをキャッチして、任意の操作を実行できます。
$( "#myTabs" ).on( "tabsactivate", function( event, ui ) {
// your custom code on tab click
});
クリックイベント自体をトリガーしようとするのではなく(このコンテキストではプログラムでユーザーイベントを呼び出すことはできないと思います)、クリックイベントで呼び出す必要がある関数をトリガーすることをお勧めします。 triggerHandler