Dans jquery-ui 1.9, comment voulez-vous créer de nouveaux onglets de façon dynamique?
Selon le guide de mise à jour de jquery-ui 1.9 onglets - http://jqueryui.com/upgrade-guide/1.9/#deprecated-add-and-remove-methods-and-events-use-refresh-method - lors de l'ajout de nouveaux onglets de façon dynamique, vous n'avez qu'à faire quelque chose comme ceci:
HTML:
<div id='tabs'>
<ul>
<li><a href='#tab1'>#1</a></li>
</ul>
<div id='tab1'></div>
</div>
<button id='add-tab'>Add tab</button>
JavaScript:
$(document).ready(function() {
$("div#tabs").tabs();
$("button#add-tab").click(function() {
var num_tabs = $("div#tabs ul li").length + 1;
$("div#tabs ul").append(
"<li><a href='#tab" + num_tabs + "'>#" + num_tabs + "</a></li>"
);
$("div#tabs").tabs("refresh");
});
});
Cependant, lorsque j'essaie de changer entre nouvellement créés, les onglets, j'obtiens l'erreur suivante dans firebug:
jQuery UI Tabs: Désadaptation identificateur de fragment.
Si je comprends bien, cette erreur signifie que le panneau d'onglets n'est pas en cours de création (et donc il y a un décalage entre la valeur liquidative du panneau et le panneau d'onglets). Mais le guide de mise à niveau ne fait aucune mention de la création d'un panneau à onglets.
Donc je suis en supposant que ce soit je me suis fais mal ou que le guide de mise à niveau est incomplète. Veuillez préciser.
Fait intéressant à noter, lors de la suppression des onglets, le guide de mise à niveau dit que vous avez explicitement supprimer à la fois l'élément de la liste à partir de la valeur liquidative du panneau ainsi que le panneau d'onglets de manière explicite, alors je me demandais si la même chose s'applique à l'ajout d'onglets.
Grâce Krippie. Avez-vous essayé de changer entre les onglets? Si vous le faites, vous verrez l'erreur d'incompatibilité. La seule chose qu'il fixe est d'ajouter: $("div#onglets").append("<div id= "onglet" + num_tabs + "'>Onglet " + num_tabs + "</div>"); Mais ce n'est pas mentionné dans les docs.
Guide officiel avec source sur comment ajouter et supprimer des Onglets de manière dynamique en JQuery UI disponible ici: jqueryui.com/tabs/#manipulation
OriginalL'auteur Kosta Kontos | 2013-02-05
Vous devez vous connecter pour publier un commentaire.
Le guide doit être incomplète, vous devez ajouter un panneau à onglets
exemple
Ce n'est pas une bonne idée avec
num_tabs
, pourquoi? Par exemple, nous avons ouvert 3 onglets. Ainsi, la dernière ontnum_tabs = 3
, puis on ferme le premier onglet avecnum_tabs=1
, maintenant, quand nous essayons d'ajouter un nouvel onglet, le comte de onglets = 3var num_tabs = $("div#tabs ul li").length + 1;
donc, nous essayons d'ajouter un nouvel onglet avec id qui existe déjà. C'est donc un MAL. J'ai besoin de quelques temps pour régler et imprimer mon code ci-dessous.Je comprends votre raisonnement, mais je pense que vous avez plus de génie s'il n'y a pas une obligation de supprimer des onglets. En ce sens, la solution que j'ai mis en avant est la bonne façon, parce qu'il fait ce qui doit être fait et rien de plus.
voir l'Écriture de code robuste vs overengineering
OriginalL'auteur
Après chaque onglet outre, vous devez créer un div pour afficher du contenu, comme pour la création de
tab number 2
vérifier le violon http://jsfiddle.net/AJDLt/1/
Vous devez utiliser la méthode
add
dejquery ui
$('div#tabs').tabs('add', 'tab'+num_tabs, num_tabs);
vérifier le violon, ici jsfiddle.net/AJDLt/3 Dans ce cas, vous n'avez pas à appliquer votre propre logique, il ajoute automatiquement un nouvel onglet, vous pouvez créer son id par votre logique.Hey Rohan, le "complément" de la méthode a été dépréciée en jquery-ui 1,9 et disparaît en 1.10. D'où cette question.
Ok, mais je pense qu'il y a peut être une alternative pour cette.
OriginalL'auteur Rohan Kumar
Donc, la bonne façon de faire cela comme une réponse sommet, mais sans nub_tabs.
OriginalL'auteur fdrv
Il est dommage que les onglets
"add"
a été supprimé, cependant jQuery est très facile à étendre. Il suffit d'ajouter votre propreaddTab
méthode.par exemple quelque Chose comme ceci:
Et l'utiliser comme ceci:
JSFiddle: http://jsfiddle.net/TrueBlueAussie/AJDLt/315/
Comme suggéré par @Andy, vous avez besoin de faire usage
.first()
si vous imbriquez des onglets dans votre interface:par exemple quelque Chose comme ceci:
Changer pour "$('ul', this).premier (le)..." pour le faire fonctionner comme prévu.
Ajouté. merci.
OriginalL'auteur Gone Coding
Un exemple est décrit en plus de détails ici en outre, il est un praticable version est sur jquery ui du site officiel avec son code source.
Une simple déclaration pourrait être quelque chose comme ce qui suit:
Ajout d'un nouvel onglet est plus facile, il suffit de taper le texte suivant:
OriginalL'auteur msoliman