56 votes

Boîte de dialogue jQuery UI - vérifie s'il existe une méthode d'instance

Je voudrais utiliser instance méthode pour tester si jQuery UI Dialog widget a été initialisé ou non. Quant à l'API, c'est possible, mais il ne fonctionne pas pour moi:

Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'instance'

démo: http://jsfiddle.net/mDbV7/

Mise à JOUR:

C'était une erreur dans la documentation, instance méthode sera disponible à partir de la version 1.11.0, voir ce problème.

90voto

jbabey Points 20696

La dernière version de l'interface utilisateur de jQuery ne vous permet plus d'appeler des méthodes d'interface utilisateur sur des éléments non encore initialisés. Je viens de les envelopper dans une déclaration if, comme:

 if ($("#divToBeDialoged").hasClass('ui-dialog-content')) {
    // do whatever
} else {
    // it is not initialized yet
}
 

Edit: nom de classe modifié, merci @dmnc

19voto

C'est aussi une bonne habitude de vider et de détruire les dialogues une fois que vous avez fini de les utiliser. J'utilise habituellement ce code dans l'événement de clôture de chaque dialogue

 $("#myDialog").dialog({
    // other options
    close: function(event, ui) {
        $(this).empty().dialog('destroy');
    }
}
 

Ce serait mon conseil, plutôt que de demander à chaque fois si un dialogue existe dans une instance, assurez-vous que chaque dialogue se nettoie après lui-même.

1voto

Mahesh Reddy Points 188
     if ($('#update').is(':data(dialog)')) 
     {
              //#update has dialog
     }
     else
     {
              //#update does't have dialog
     }

1voto

Awan Points 11

Pour l'interface utilisateur jQuery - v1.10.3

 if($( "#myDialog" ).is(':data(uiDialog)')){//is(':data(dialog)') does not work
    //Dialog exist
}
 

0voto

dmnc Points 149

une autre façon est

 $('.element').is(':data(dialog)');
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X