Comment puis-je obtenir un jquery dialogue de l'interface utilisateur de l'objet?
Dire que j'ai une boîte de dialogue ouvrir qui n'a pas de "id" comment puis-je trouver la boîte de dialogue et obtenir la boîte de dialogue de l'objet afin que je puisse faire .la boîte de dialogue ("fermer") sur elle?
Exemple
//say if this was my dialog
<div>
<input type="button" id="btn" />
</div>
$("#btn").parents("div").dialog('close');
Cela ne fonctionne pas bien donc j'ai besoin d'obtenir l'objet réel.
Vous devez vous connecter pour publier un commentaire.
C'est la raison pour laquelle vous devriez avoir un id sur ces divs. Considérez les options suivantes:
Envisager d'ajouter l'id de la balise. C'est facile à faire et à entretenir.
Sinon, lorsque vous obtenez la div(s) à l'origine, avant d'effectuer un
.dialog()
, leur donner de la dynamique id:el.attr('id', 'dialogBox')
.Si vous ne voulez pas leur donner des id (pour une raison étrange), vous avez encore à un certain point dans le temps dans votre code js, afin de sauvegarder les références à ces objets. Plus tard, reportez-vous à la référence et vous pouvez appeler
.dialog('close')
. Que va également effectuer la mise en cache pour vous, donc vous n'avez pas besoin de rechercher dans l'arborescence DOM nouveau.Comme un dernier recours, si vous ne voulez pas le faire ci-dessus, reportez-vous ensuite à eux de la même manière que vous avez fait à l'origine (ce n'est pas toujours une bonne idée, surtout si le DOM changements).
Bien que juste pour la référence, votre exemple (qui emploie la dernière option) fonctionne: http://jsfiddle.net/vbcMW/
.data()
méthodes, ou encore mieux closured variables locales.Je crois trouver le plus proche
div
avec classeui-dialog-content
devrait fonctionner:(
.ui-dialog-content
est appliqué à l'originediv
, qui est ensuite enveloppé dans un peu d'autresdiv
s)Voici un exemple de travail: http://jsfiddle.net/HPkvZ/
:first
à seulement fermer la zone de dialogue:$(this).parents("div.ui-dialog-content:first").dialog("close");
closest
, si je comprends bien le problème correctement.$(this).parents('.ui-dialog').dialog('close');
- si proche!Viens de trouver le plus proche parent de la actuellement élément actif qui est un dialogue:
Ceci est utile si vous avez beaucoup de dialogues tous empilés etc. Notez que z-index n'est plus utilisé par jquery-ui.
Pour trouver et fermez tous les jQueryUI dialogues:
$(":ui-dialog").la boîte de dialogue("fermer");
Juste de sauver la référence que jQuery est de retour de l'
.dialog
invocation:Vous pouvez alors utiliser cette référence plus tard à ouvrir la fenêtre contextuelle:
ou à le supprimer entièrement (avec ses généré
.parent
wrapper):Vous pouvez même l'avoir supprimer lui-même quand il est fermé, en créant avec le
close
option (ou ajouter plus tard):JS:
HTML:
pourquoi ne pas utiliser les boutons d'option? vous permettant de près via $(this).la boîte de dialogue ("fermer");
http://jsfiddle.net/dwick/DqLct/2/
aussi, est-il une raison de ne pas donner les div id? vous avez de référence en quelque sorte à créer la boîte de dialogue de toute façon.