J'ai ajouté une boîte de dialogue jQuery UI à mes Rails 3 application web comme suit:Boîte de dialogue jQuery UI - Dès que j'ajoute une seconde boîte de dialogue à l'application, elle se casse?
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({url: '/stuff/'})
},
close: function() {
$('#dialog-content').html('<div class="notification"><h4>Loading...</h4></div>');
}
});
$(".teammember-dialog").live("click",function(){
permissions.dialog('open');
return false;
});
Ce qui est déconcertant pour moi, je viens d'ajouter une autre boîte de dialogue pour mon application comme suit:
dialogstuff2 = $('<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({url: '/stuff/'})
},
close: function() {
$('#dialog-content').html('<div class="notification"><h4>Loading...</h4></div>');
}
});
$("#addlink").live("click",function(){
dialogstuff2.dialog('open');
return false;
});
Avec la 2ème dialogue, il casse les deux dialogues. Ils s'ouvrent tous les deux mais ils ne répondent pas au JS qui est chargé lorsque la boîte de dialogue appelle le serveur Web. Si j'enlève le 2ème, le premier fonctionne bien. Mais lorsque les deux sont sur la page, lorsque je clique pour charger l'un ou l'autre, la boîte de dialogue reste immobile avec le texte de chargement par défaut "loading ..."
Vous avez déjà vu cela? merci
Merci, cela semble être un problème. Mais avoir des ID différents ne semble pas très sec? Existe-t-il un moyen de le faire fonctionner avec le même ID afin que les choses ne deviennent pas désordonnées car mon application aura probablement plusieurs boîtes de dialogue? ... De plus, de nombreux paramètres de Dialog sont les mêmes, existe-t-il un moyen de définir cela? toutes les boîtes de dialogue, et juste ajouter les attributs de dialogue personnalisés comme l'URL de publication par boîte de dialogue? – AnApprentice
En ce qui concerne DRY, l'ID est destiné à être unique dans une page afin que le navigateur et jQuery en profitent pour les performances et peut-être d'autres raisons. Peut-être que faire l'ID reflète le but de la boîte de dialogue aidera? En ce qui concerne les paramètres globaux, j'ose dire que c'est possible avec une petite fonction wrapper, cependant cela est mieux posé comme une question séparée car mon Javascript est encore assez novice :) – amarsuperstar
le principal DRY est mieux géré en JavaScript en créant des méthodes wrapper, des constructeurs ou des usines comme @ a, arsuperstar mentionné. J'ai répondu ci-dessous avec quelques méthodes qui illustrent l'idée. – Gabriel