2010-04-16 7 views
1

J'ai quelques vidéos de démonstration que j'ai faites comme tutoriels, et j'utilise un lien pour ouvrir une boîte de dialogue et mettre la vidéo de démonstration dans ce boîte.jQuery rupture de dialogue après la fermeture - J'utilise le dialogue détruire

J'utilise le même div pour afficher d'autres notes sur la page lorsqu'un utilisateur sélectionne pour afficher une note complète.

Le code que j'utilise pour montrer les notes est

 
    jQuery('span.Notes').live('click', function(){ 
var note=jQuery(this).data('note'); 

    jQuery('div#showNote').text(note); 
     jQuery('div#showNote').append('
'); jQuery('div#showNote').dialog({ modal: true, close: function(){ jQuery('div#showNote').dialog('destroy').empty(); } }); });

Le code que j'utilise pour les vidéos de démonstration est très similaire.

 
jQuery('a.demoVid').click(function(){ 
     var videoUrl=jQuery(this).attr('href'); 
     jQuery('div#showNote').dialog({ 
     modal: true, 
    height: 400, 
    width: 480, 
    close: function(){ 
    jQuery('div#showNote').dialog('destroy').empty(); 
    } 
    }); 
    swfobject.embedSWF(videoUrl,'showNote','480','390','8.0.0'); 
return false; 
}); 

Je peux cliquer sur autant de notes que je veux, et la boîte de dialogue s'ouvre et affiche la note. Toutefois, lorsque je clique sur le demoVid, la boîte de dialogue s'ouvre, mais la fermeture de la boîte de dialogue élimine toute autre boîte de dialogue 'showNote' sur la page, donc je ne peux plus ouvrir de notes ou de vidéos de démonstration.

Répondre

2

Ma deuxième hypothèse est que l'appel à swfobject.embedSWF piétine sur la div # showNote dans certains manière qui confond jQuery. Je voudrais essayer de mettre la vidéo dans un div à l'intérieur de la boîte de dialogue, soit:

jQuery('div#showNote').append('<div id="showVideo"></div>').dialog({ ... }); 
swfobject.embedSWF(videoUrl,'showVideo','480','390','8.0.0'); 
+0

Merci Tom, tu avais absolument raison, swfobject était en train de piétiner quelque chose. Merci. – pedalpete

2

Votre boîte de dialogue cible div#showNote et les ID d'élément doivent être uniques dans le document. Vous devez changer de sorte qu'il crée une nouvelle div pour chaque instance de dialogue, quelque chose comme ce qui suit (non testé):

jQuery($('<div class="note">')).dialog({ ... 
    close: function() { 
    $(this).dialog('destroy').empty(); 
    } 
}); 
+0

Je ne suis pas sûr de comprendre exactement, ou nous pouvons mal se comprendre. Il n'y a qu'une seule div # showNote sur la page. Je mets la note dans le même div que je mets le résultat de la démoVid. Les deux ne peuvent jamais être ouverts en même temps, alors plutôt que d'ajouter un autre div à la page, j'utilise un div qui est déjà là. – pedalpete

+0

Ok, oui, j'ai mal compris ce que vous vouliez dire par "tue les autres boîtes de dialogue showNote", vous voulez dire que ça les empêche d'ouvrir à partir de ce moment-là, pas de fermer celles ouvertes. – Tom

Questions connexes