私はjquery 1.9とjquery UI 1.10を使用しています
タブをクリックしたときにタブIDを取得できるようにします。たとえば、「Second」という名前のタブをクリックした場合、「tabs-2」応答を取得します。
これまでに以下のコードを実行しました。
<script type="text/javascript">
$(function () {
$("#tabs").tabs({
beforeActivate: function (event, ui) {
alert(/* the id of the tab (div) being activated */);
}
});
});
</script>
<div id="tabs">
<ul>
<li><a href="#tabs-1">First</a></li>
<li><a href="#tabs-2">Second</a></li>
</ul>
<div id="tabs-1">
<p>abcde</p>
</div>
<div id="tabs-2">
<p>fghi</p>
</div>
</div>
JQueryUI 1.10でテストおよび操作し、選択されたタブのIDを取得する方法:
$("#tabs").tabs({
beforeActivate: function (event, ui) {
alert(ui.newPanel.attr('id'));
}
});
var $tabs = $("#tabs").tabs({
select: function( evt, ui ) {
$("#current").text( $(ui.tab).attr('href'));
}
})
[〜#〜] update [〜#〜]-jquery UI 1.10の別のソリューション
$(function () { $('#tabs').tabs({
activate: function (event, ui) {
var active = $("#tabs").tabs("option", "active");
alert($("#tabs ul>li a").eq(active).attr('href'));
}
});
これは私のために働く
$( "#editor_tabs" ).tabs( {
activate: function ( event, ui ) {
$(ui.newTab.find("a").attr("href")).html("Got It");
}
});
タブをクリックしたときに何かを取得したい場合は、selectイベントを使用します。
$('#tabs').tabs({
beforeActivate: function(event, ui){
alert($(ui.tab).attr('href'));
}
});
編集
バージョン1.10から削除されたため、「select」を「beforeActivate」に変更しました
var id=$("ulselector li.ui-state-active").attr("aria-controls"));
alert(id);
JQueryUIイベントオブジェクトを調べます(MozillaのFirebugまたはChrome開発者ツール)などのブラウザーデバッガーを使用します)。
$("#tabs").tabs({
activate: function( event, ui ) {
console.log(event) //unnecessary, but it's how to look at the event object
alert(event.currentTarget.hash)
}
});
どのタブがアクティブになり、それに基づいてさまざまなアクションを実行するかを知りたいと思います。
HTML要素からIDと属性を取得するのではなく、次のようにします。
$("#tabs").on("tabsactivate", (event, ui) => {
if (ui.newPanel.is("#tabs-1")){
//first tab activated
}
else{
//second tab activated
}
});
タブが作成されたときに、アクティブ化イベントが呼び出されていません。そのためには、ミックスに「tabscreate」イベントを追加する必要がありますが、アイデアは得られます。
わたしにはできる
$('#divName .ui-tabs-panel[aria-hidden="false"]').prop('id');
私の意見では、最も簡単な方法は、タブを構成する_data-
_に_<li ...>
_を追加することです。
例えば:
_ <li data-index="2" data-tabname="Notes">
<a href="#tabs-Employee-Notes">Notes</a>
</li>
_
次に、beforeActivateイベントを処理します(それが目的のイベントである場合)。
_$("#jqTabs_EmployeeDetails").tabs({
heightStyle: "fill",
beforeActivate: function (event, ui) {
var n = ui.newTab;
console.log($(n).data());
}
});
_
たとえば、$(n).data("tabname"
)はタブ名を返します。これにより、必要な他の情報をタブに追加することもできます。シンプルなソリューションとスケーラブル。
Aria-controlsを使用する
alert(ui.newTab.attr("aria-controls"));
私が見つけた最も簡単な方法は:
$('#tabs .ui-state-active').attr('aria-controls')
これにより、アクティブなdivからIDが返されます。 #tabsをjquery.tabs IDに変更する必要があることに注意してください。