关闭后jQuery对话框断开 - 我正在使用对话框销毁

时间:2010-04-16 03:30:20

标签: jquery jquery-ui jquery-ui-dialog

我有一些我作为教程制作的演示视频,我正在使用链接打开一个对话框并将演示视频放在该框中。

当用户选择查看完整音符时,我使用相同的div在页面上显示其他音符。

我用来显示笔记的代码是

    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(); } }); });

我用于演示视频的代码非常相似。

 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;
 });

我可以点击任意数量的笔记,然后打开对话框并显示笔记。 但是,当我单击demoVid时,对话框会打开,但是关闭对话框会导致页面上任何其他“showNote”对话框被删除,因此我无法再打开任何笔记或演示视频。

2 个答案:

答案 0 :(得分:3)

您的对话框正在定位div#showNote,元素ID在文档中必须是唯一的。您应该更改它,以便为每个对话框实例创建一个新的div,如下所示(未经测试):

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

答案 1 :(得分:3)

我的第二个猜测是对swfobject.embedSWF的调用是以某种混淆jQuery的方式践踏div#showNote。我会尝试将视频放在对话框中的div中:

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