2010-07-22 7 views
4

En utilisant jQuery UI, j'ai un plugin onglets et dans l'onglet 1 est chargé une page qui contient un tableau et dans chaque rangée est un lien vers un dialogue.La boîte de dialogue jQuery UI close n'efface pas la boîte de dialogue

tout fonctionne correctement, enregistrez ce qui suit:

Dans la boîte de dialogue est une option pour supprimer la ligne à partir de laquelle a été ouvert la boîte de dialogue en cours à partir. Après confirmation et suppression de la ligne, l'onglet est actualisé et la nouvelle table est affichée avec la ligne correspondante supprimée. Maintenant, le problème est qu'après avoir fermé la boîte de dialogue où j'ai effacé (soit la fonction JavaScript qui a fait la suppression, soit manuellement via le bouton de fermeture de la boîte de dialogue), la boîte de dialogue conserve les données de la ligne supprimée . Par exemple,

Il existe trois lignes répertoriées;

Boîte de dialogue ouverte à partir de la ligne 2;

Supprimer;

Boîte de dialogue fermée à partir de la fonction JavaScript, actualisations de tabulation, maintenant deux lignes;

Le lien d'ouverture de boîte de dialogue de la deuxième ligne (qui était auparavant la ligne 3) a le même identifiant de boîte de dialogue que celui qui vient d'être ouvert;

Cliquez sur ouvrir le lien de la ligne 2; La boîte de dialogue affiche la même chose que précédemment - pour l'ancienne ligne 2, au lieu de la ligne 2 actuelle;

Boîte de dialogue de fermeture;

Cliquez sur ouvrir le lien de la ligne 2;

Affiche correctement les données de la ligne 2 actuelle;

Je ne sais pas si cela avait un sens ... Voilà une image de ce qui se passe:

Enter image description here

Ainsi, la ligne en dessous de la ligne qui est supprimé hérite de la boîte de dialogue id, et quand cliqué montre l'ancien dialogue. S'il est fermé, puis rouvert, il affiche le contenu approprié dans la boîte de dialogue.

J'utilise dialog("close") actuellement et ont essayé dialog("destroy"), mais qui tue tout, et la ligne ci-après ne pas ouvrir quoi que ce soit ...

Comment puis-je résoudre ce problème?


Dialog Code instanciation:

<script> 
    <?php 
     $ee=1; 
     foreach($bugs->result() as $rr){ 
      echo "jQuery(\"#dialog_$ee\").dialog({autoOpen:false,width:850,height:550});\n"; 
      $ee++; 
    }?> 
</script> 

Ensuite, ouvrez la boîte de dialogue:

jQuery("#dialog_<?=$i?>").dialog("open"); 
+0

Nous devons voir le code dans lequel vous ouvrez la boîte de dialogue. –

+0

@Nick Craver 'jQuery (" # dialogue_7 "). Dialog (" open ");' – stormdrain

+0

Il doit y avoir plus que cela, il y a un titre et un contenu dans le dialogue ... besoin de code pour résoudre un problème :) –

Répondre

1

Il se trouve la boîte de dialogue ne va nulle part. Après la fermeture, il y avait maintenant deux boîtes de dialogue avec le même id.

Dans le gestionnaire de succès de la fonction de suppression appelée, j'ai fini de réinitialiser l'ID de dialogue puis appeler dialogue (« détruire ») sur elle:

onSuccess: function(transport){ 
    var tabs = jQuery('#tabs').tabs(); 
    tabs.tabs('url', 0,'/bugs/loadTab1'); 
    tabs.tabs('load', 0); 
    closeDialog(dialogID); 
    jQuery("#"+dialogID).attr("id",dialogID+"_old"); 
    jQuery("#"+dialogID+"_old").dialog("destroy"); 
}, 
+0

Oui, ce problème peut se produire s'il existe deux étiquettes de dialogue ayant le même ID (qui n'est pas un code HTML valide). – 0x4a6f4672

Questions connexes