2010-12-09 56 views
0

dans mon application J'utilise plusieurs boîtes de dialogue différentes, qui sont toutes contenues dans mon fichier JS de base. Cela a fini par créer plusieurs DIVs cachés sur chaque page. Ce qui semble être un gâchis, une performance, etc ... Pourquoi la boîte de dialogue jQuery UI crée-t-elle ces DIVs, et comment pouvez-vous faire en sorte qu'ils n'apparaissent que lorsque vous appelez pour rendre le dialogue?jQuery-ui Dialog - toutes ces DIV fantômes sont insérées dans ma page

Ce sont ce que j'ai en bas de ma page, plusieurs d'entre eux:

<div style="display: none; z-index: 1000; outline-width: 0px; outline-style: initial; outline-color: initial; " class="ui-dialog ui-widget ui-widget-content ui-corner-all dialog" tabindex="-1" role="dialog" aria-labelledby="ui-dialog-title-dialog-sssss">........... 

Le code que je utilise pour mes dialogues: (1 Dialog en particulier):

permissions = $('<div id="dialog-content"></div>') 
.html('<div class="notification"><h4>Loading...</h4></div>') 
.dialog({ 
    autoOpen: false, 
    dialogClass: 'dialog', 
    width: 460, 
    minHeight: 80, 
    position: ['center',130], 
    open: function() { 
     $.ajax({.......}) 
    }, 
    close: function() { 
     // Remove out the Dialog so it show's loading... nex time 
     $('#dialog-content').html('<div class="notification"><h4>Loading...</h4></div>'); 
    }  
}); 
$(".teammember-dialog").live("click",function(){ 
    permissions.dialog('open'); 
    return false; 
}); 

Des idées? ou des pensées?

Merci

Répondre

0

Je ne sais pas si cela est techniquement une « réponse », mais depuis que vous avez demandé pensées ...

Comme il semble que vous avez compris, les « fantômes divs » sont les divs que jQueryUI utilisera pour créer les boîtes de dialogue actuelles. Pour ce qui est de savoir si la création de toutes les boîtes de dialogue est un «gaspillage» ou un «coup de performance», je dirais que vous vous inquiétez prématurément de l'optimisation. Je ne prétends pas connaître le nombre de personnes qui utilisent les boîtes de dialogue jQuery, mais étant donné la popularité de la bibliothèque, je dirais que c'est un chiffre suffisamment important pour qu'en cas de problèmes de performance, nous en ayons entendu parler. Je comprends et respecte le désir de construire un site ou une application aussi performant que possible, mais il y a toujours un «juste milieu» entre une performance acceptable et un code maintenable. Je ne sais pas pourquoi jQuery crée les divs à l'avance, et je ne sais pas quel est le résultat d'un "hit". Je suppose que la création de divs à "runtime" (comme chaque div est demandé) pourrait résulter chez l'utilisateur voyant un décalage assez notable entre le moment où ils déclenchent le dialogue et le moment où il apparaît?

Je suppose que quand tout est dit et fait, je demanderais simplement si vous voyez des problèmes de performance avec la page. Est-ce que le chargement est plus lent qu'avant la mise en œuvre des boîtes de dialogue? Si c'est le cas, et si vous voulez vraiment fouiller dans les «pourquoi», je suggérerais probablement de contacter les gens bien à jQueryUI. Donnez-leur du code et voyez s'ils pensent qu'il y a une justification pour essayer de refactoriser le code pour en extraire plus de performance.