Obtenir L'ID de l'onglet (div) étant activé

j'utilise jquery 1.9 et jQuery UI 1.10

je veux être en mesure d'obtenir l'onglet ID lorsque vous cliquez sur un onglet. Par exemple, si j'ai cliqué sur tab nommé "Second" je veux obtenir la réponse "tabs-2".

j'ai fait le code ci-dessous:

<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> 
42
demandé sur mins 2013-01-24 17:11:04

11 réponses

testé et travaillant avec JQueryUI 1.10, comment obtenir L'ID de l'onglet comme il est sélectionné:

$("#tabs").tabs({
  beforeActivate: function (event, ui) {
    alert(ui.newPanel.attr('id'));
  }
});
55
répondu thenickdude 2013-02-24 08:23:58
var $tabs = $("#tabs").tabs({
    select: function( evt, ui ) {
        $("#current").text( $(ui.tab).attr('href'));
    }
})

UPDATE - une autre solution pour 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')); 
     } 
}); 

mise à Jour de jsFiddle Démo

22
répondu MuhammadHani 2013-01-24 17:54:32

Cela fonctionne pour moi

$( "#editor_tabs" ).tabs( { 
    activate: function ( event, ui ) {
        $(ui.newTab.find("a").attr("href")).html("Got It");
    }
});
4
répondu Eelco 2013-12-06 06:06:09

Si vous voulez obtenir quelque chose en cliquant sur l'onglet, sélectionnez l'événement.

$('#tabs').tabs({
  beforeActivate: function(event, ui){
     alert($(ui.tab).attr('href'));
 }
 });

EDIT

change 'select' en 'beforeActivate' car il a été supprimé de la version 1.10

2
répondu P...P... 2013-01-24 15:54:57

je suppose que vous voulez savoir quel onglet est activé, et basé sur cela exécuter diverses actions.

plutôt que de chercher des ID et des attributs à partir des éléments HTML, voici comment faire:

$("#tabs").on("tabsactivate", (event, ui) => {
    if (ui.newPanel.is("#tabs-1")){
        //first tab activated
    }
    else{
        //second tab activated
    }
});

activer L'événement n'est pas appelé quand les onglets créés. Pour cela, vous devez ajouter l'événement "tabscreate" dans le mix, mais vous avez l'idée.

1
répondu MoonStom 2013-09-28 00:36:08

examinez l'objet jQueryUI event (utilisez un débogueur de navigateur comme Firebug de Mozilla ou Chrome developer tools).

$("#tabs").tabs({        
    activate: function( event, ui ) { 
        console.log(event)  //unnecessary, but it's how to look at the event object              
        alert(event.currentTarget.hash)
    }
});
1
répondu wildbill 2013-10-14 05:01:01
var id=$("ulselector li.ui-state-active").attr("aria-controls"));
alert(id);
1
répondu Nikhil Raj k 2014-10-20 07:09:55

Utilisez aria-controls

alert(ui.newTab.attr("aria-controls"));
0
répondu Marius D 2013-01-27 12:00:13

À mon avis, le plus simple est d'ajouter data-<li ...> qui composent les onglets.

Par exemple:

                <li data-index="2" data-tabname="Notes">
                  <a href="#tabs-Employee-Notes">Notes</a>
                </li>

puis gérer l'événement beforeActivate (si c'est l'événement que vous regardez):

$("#jqTabs_EmployeeDetails").tabs({
    heightStyle: "fill",
    beforeActivate: function (event, ui) {
        var n = ui.newTab;

        console.log($(n).data());
    }
});

Par exemple, $(n).data("tabname") renvoie le nom de l'onglet. Cela vous permet également d'ajouter toute autre information dont vous avez besoin pour les onglets. Simplist solution et évolutive je crois.

0
répondu Michael 2015-01-13 03:53:23

Cela fonctionne pour moi

$('#divName .ui-tabs-panel[aria-hidden="false"]').prop('id');
0
répondu krunal chavda 2015-03-11 07:00:06

Le easyest façon que j'ai trouvée est :

$('#tabs .ui-state-active').attr('aria-controls')

ceci retournera L'ID de la sorcière div est active. Rappelez-vous que vous devez changer #tabs à votre jquery.tabs ID.

0
répondu Frank 2016-01-20 09:49:11