【问题标题】:jQuery dialog breaking after closing - I'm using dialog destroyjQuery 对话框在关闭后中断 - 我正在使用对话框销毁
【发布时间】:2011-02-08 16:11:08
【问题描述】:

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

当用户选择查看完整的笔记时,我使用相同的 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({ 模态:真, 关闭:函数(){ jQuery('div#showNote').dialog('destroy').empty(); } }); });

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

jQuery('a.demoVid').click(function(){ var videoUrl=jQuery(this).attr('href'); jQuery('div#showNote').dialog({ 模态:真, 身高:400, 宽度:480, 关闭:函数(){ jQuery('div#showNote').dialog('destroy').empty(); } }); swfobject.embedSWF(videoUrl,'showNote','480','390','8.0.0'); 返回假; });

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢汤姆,你说的完全正确,swfobject 践踏了一些东西。谢谢。
    【解决方案2】:

    您的对话框的目标是 div#showNote,并且元素 ID 在文档中必须是唯一的。您应该更改它,以便它为每个对话框实例创建一个新的div,类似于以下内容(未经测试):

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

    【讨论】:

    • 我不确定我是否完全理解,或者我们可能会相互误解。页面上只有一个 div#showNote。我将注释放在与 demoVid 的结果相同的 div 中。无论如何,这两者永远不能同时打开,所以我没有向页面添加另一个 div,而是使用已经存在的 div。
    • 好的,是的,我误解了你所说的“杀死任何其他 showNote 对话框”的意思,你的意思是它从那时起停止它们打开,而不是关闭打开的对话框。
    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2011-02-25
    相关资源
    最近更新 更多