47 votes

changer d'emplacement.hash avec jquery ui tabs

J'ai essayé de trouver un moyen de changer la fenêtre.emplacement.hachage de l'onglet actuellement sélectionné dans Jquery UI Tabs.

J'ai essayé:

$("#tabs > ul").tabs();
$("#tabs > ul").bind("tabsshow", function(event, ui) { 
window.location.hash = ui.tab;
})

Cela se traduit dans l'évolution de la valeur de hachage à #non défini lorsque l'onglet est modifiée.

J'ai aussi essayé:

$("#tabs > ul").tabs({ 
select: function(event, ui) { 
window.location.hash = ui.tab }
});

Mais cela ne semble pas être déclenchée à tout.

Toute aide serait appréciée. Merci.

Edit: Il ressemble à une partie de mon problème initial avait quelque chose à faire avec js ailleurs interférer avec cette. Les deux accepté de répondre et de l'autre les réponses proposées légèrement modifiée faire le travail. Merci à tous.

49voto

Serhii Points 3467

Dans votre fonction de gestionnaire d'événement ui.tab est un point d'ancrage de l'élément. Vous pouvez récupérer sa valeur de hachage comme ceci:

$("#tabs > ul").tabs();
$("#tabs > ul").bind("tabsshow", function(event, ui) { 
    window.location.hash = ui.tab.hash;
})

Cela fonctionne pour vous?

25voto

$('#tabs').tabs({
    select: function(event, ui) {
        window.location.hash = ui.tab.hash;
    }
});

14voto

n8vision Points 139

Alors que certaines de ces solutions ne fonctionne, ils provoquent la page pour naviguer dans certains cas, comme la fenêtre.emplacement.hachage de l'API est conçue pour vous amener à une partie spécifique de la page.

Cette solution élégante proposée ici, résout ce problème

  $("#tabs").bind("tabsshow", function(event, ui) { 
    history.pushState(null, null, ui.tab.hash);
  });

8voto

romaninsh Points 6048

Cela a fonctionné pour moi, jQuery UI 1.10:

$('#elexumaps_events_tabs').tabs({
    activate: function(event, ui) { 
       window.location.hash=ui.newPanel.selector; 
    }
});

Voir aussi: http://api.jqueryui.com/tabs/#event-activate

7voto

Arthur Points 1064

ma solution simple sans saut:

    $("#tabs").tabs({
        activate: function (event, ui) {
            var scrollPos = $(window).scrollTop();
            window.location.hash = ui.newPanel.selector;
            $(window).scrollTop(scrollPos);
        }
    });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X