Je suppose que vous animez les transitions de vos onglets ? J'ai le même problème, où le défilement de la page revient en haut à chaque clic.
J'ai trouvé ceci dans la source de jquery :
// Show a tab, animation prevents browser scrolling to fragment,
Bien sûr, si j'ai ça :
$('.tab_container > ul').tabs();
$('.tab_container > ul').tabs({ fx: { height: 'toggle', opacity: 'toggle', duration: 'fast' } });
mon code saute en haut et est gênant (mais il y a de l'animation). Si je le change en ceci :
$('.tab_container > ul').tabs();
//$('.tab_container > ul').tabs({ fx: { height: 'toggle', opacity: 'toggle', duration: 'fast' } });
il n'y a pas d'animation des onglets, mais le passage d'un onglet à l'autre est fluide.
J'ai trouvé un moyen de le faire défiler en arrière, mais ce n'est pas une bonne solution, car le navigateur saute toujours en haut après avoir cliqué sur un onglet. Le défilement se produit entre les événements tabsselect et tabsshow, donc le code suivant permet de revenir à votre onglet :
var scroll_to_x = 0;
var scroll_to_y = 0;
$('.ui-tabs-nav').bind('tabsselect', function(event, ui) {
scroll_to_x = window.pageXOffset;
scroll_to_y = window.pageYOffset;
});
$('.ui-tabs-nav').bind('tabsshow', function(event, ui) {
window.scroll(scroll_to_x, scroll_to_y);
});
Je posterai tout progrès supplémentaire que je ferai.