Si vos liens pointent vers les ID des éléments de dialogue, et si vous ajoutez une méta classe choose
à chacun d'eux, vous pouvez combiner les trois derniers appels à:
$('a.choose').click(function() {
$(this.hash).dialog('open');
return false;
});
Le code HTML pour un de ces liens est le plus sémantiquement correct et fonctionne même avec JS désactivé (en supposant, les dialogues sont là, alors):
<a href="#chooseMoreCat" class="choose">Choose more categories</a>
la this.hash
partie explique:
this
dans le cadre d'une fonction de gestion des événements jQuery est toujours l'élément, que l'événement est apparu à. Dans notre cas, c'est le lien cliqué. Notez que c'est le nœud DOM , pas un élément jQuery.
this.hash
: noeuds DOM, qui correspondent à HTML <a/>
éléments, ont certaines propriétés particulières, qui permettent d'accéder à la cible qu'ils liez. La propriété hash
est tout (et inclus) un caractère #
dans l'URL. Dans notre cas, si le lien pointe vers les éléments qui devraient devenir des boîtes de dialogue, c'est quelque chose comme la chaîne "#chooseMoreCnt"
.
$(this.hash)
est la fonction jQuery appelé, par exemple, "#chooseMoreCnt"
, qui permet de sélectionner le div
approprié.
Pour l'initialisation de dialogue, je voudrais aussi aller pour les classes:
$(".choose_dialog").dialog({
bgiframe: true,
autoOpen: false,
width: 500,
modal: true,
open: function(type, data) {
$(this).parent().appendTo(jQuery("form:first"));
}
});
Oui, cela signifie changer le balisage, mais il vous offre également la liberté de
ajouter un nombre quelconque de boîtes de dialogue lateron
ajouter un nombre d'ouvreurs à toute boîte de dialogue lateron
style de tous les dialogues et des liens vers des boîtes de dialogue consistantly avec CSS minimum
sans toucher le Javascript plus.
Si les dialogues sont initiés différemment (comme mentionné dans les commentaires), alors vous pouvez opter pour cette partie à l'approche $.each()
de CuSS et lire la largeur appropriée à l'intérieur de la fonction d'un objet défini ailleurs:
var dialog_widths = {'chooseMoreCat': 400, 'chooseMorePr': 300, /*...*/ };
+1 pour utiliser 'this.hash'. –
Que fait le hachage? Mais de cette façon, il a dû modifier la structure html, savez-vous s'il en a seulement 3 ou plus? – CuSS
aimerait le savoir. à quoi sert le hachage? – meo