jQuery UI tabs chargement d'abord en tant que <ul> ensuite sous forme d'onglets
Je suis à l'aide de jQuery UI et le contrôle onglet sur une série de pages.
Il semble que, lors du chargement d'une page, les onglets d'abord charger une simple liste, puis ils sautent pour le contrôle tabstrip.
Quand j'ai d'abord charger la page j'obtiens ceci:
Puis, après quelques secondes, elle passe à présent (le chemin doit être):
Une idée de pourquoi ce qui se passe? Ai-je besoin de charger le .js et/ou .les fichiers css dans un ordre particulier? Ou, est-il un moyen de masquer la liste initiale et de n'afficher que les onglets une fois qu'ils sont "chargé"?
Vous devez vous connecter pour publier un commentaire.
Cela se produit parce que vous appelez $('#id').les onglets() dans le document.ready(), ce qui se produit lorsque le DOM est prêt à être traversés[Un]. En général, cela signifie que la page a été rendu, et donc la
<ul>
est visible sur la page en tant que régulier<ul>
sans aucun onglet spécifique style appliqué.C'est pas super "propre", mais un moyen que j'utilise pour contourner ce problème consiste à ajouter le
ui-tabs
classe à la<ul>
dans le code HTML, ce qui provoque pour obtenir le style CSS appliqué immédiatement. L'inconvénient est que vous n'avez pas 100% propre séparation du code et du comportement, mais l'avantage est qu'il a l'air sympa.<div class="ui-tabs"><ul class="ui-tabs-nav">
, et potentiellement de l'interface utilisateur-les widgets* les classes - il est préférable d'utiliser firebug et inspecter l'élément après son rendu, et ajouter toutes les classes de votre code HTML.Comme d'autres l'ont dit, c'est parce que jQuery ne rend pas le
UL
sous forme d'onglets jusqu'à ce que le document est chargé. J'ai contourné ce problème simplement en cachant les pattes jusqu'à ce qu'ils sont chargés. De cette façon, vous vous débarrasser de la lueur. Par exemple:C'est normal, mais il ne devrait pas prendre quelques secondes. Combien êtes-vous en train de faire dans votre jQuery prêt (AKA
$()
) fonction avant d'appeler$("#whatever").tabs()
? Essayez de déplacer cet appel de méthode au début de votre prêt de la fonction.Hé, je ne suis pas sûr de savoir si c'est la bonne façon mais j'ai utilisé la suite de hack. (J'ai essayé d'autres réponses, et ils ne travaillent pas pour moi).
Début, j'ai utilisé le code suivant pour la balise d'ancrage:
Dans le Document prêt de fonction, j'ai écrit la suite (jQuery) code nom de l'Ancre des balises à l'aide:
Masquer la principale
div
par défaut:Puis en fin de document dans le cas où votre script, il suffit de retirer le style:
La solution qui a fonctionné pour moi a été de définir le
display
propriété de style ànone
pour ladiv
élément qui contient les onglets, puis d'appeler lashow()
méthode après latabs()
méthode.J'ai eu le même problème. La page où j'avais défini les onglets avait manqué de l'importation du jquery-ui css.
Code Html :
L'ancre href jquery-ui css importés, en raison de laquelle les onglets ont été à apparaître correctement, après les onglets chargés. Mais , avant cela, il a été montré une ul sans l'onglet style. Correctif a été d'importer jquery-ui css dans le html ci-dessus aussi. jquery-ui version utilisée : 1.10.2
Je suis en utilisant jQuery UI tabs avec un grand succès. Voici un code que j'utilise:
Que pour la commande j'ai toujours lieu à jquery ui.css en premier, suivi par jquery.min.js et jquery-ui.min.js. J'utilise les dernières versions (jQuery 1.3.2 et jQuery 1.7.2) le tout servi dans Google CDN.
Le problème est que le css de jquery-ui est pour les classes de jquery-ui script ajouter au DOM lorsque la page est chargée. Plutôt que d'ajouter ui-tabs au format HTML (comme suggéré par gregmac), il vous suffit d'ajouter le même
display
règles CSS à appliquer à votre barre de navigation id. Lorsque jqueryui ajoute les classes de laul
et les éléments de la liste, le jqueryui CSS prend le dessus.Donc ajouter cette règle css: