【问题标题】:opening Jquery dialog after destroying it销毁后打开 Jquery 对话框
【发布时间】:2012-10-23 17:21:00
【问题描述】:

我有一个 youtube 视频出现在 jquery 对话框中,所以如果它在对话框窗口关闭时播放,它将继续在幕后播放。

结果我所做的就是在窗口关闭时销毁它:

    $("#gallery_reel").dialog({
            autoOpen: false,
            width: 540,
            close: function() {
                $(this).dialog('destroy');
            }
    });

但是一旦对话框被销毁,除非我刷新页面,否则它不会再次打开。如何重新打开对话框?

【问题讨论】:

  • 你可以直接关闭而不破坏.dialog('close')
  • 当我关闭它时,视频仍在后台播放。
  • @steeped 看起来您需要知道如何在关闭对话框之前停止播放视频,然后。您使用的是视频播放器 API 吗?还是只是 HTML5 视频?销毁不是一个好方法,因为要打开对象,您必须重新实例化它,这会导致相当多的不必要的开销。
  • 为什么不使用 close 函数回调来停止 youtube 视频?

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


【解决方案1】:

我建议只使用关闭函数来停止youtube video,但如果您坚持使用其他方法,请尝试以下操作,而不是销毁:

非首选(将 html 复制到新清空的对话框中)

$("#gallery_reel").dialog({
    autoOpen: false,
    width: 540,
    close: function() {
        var inrHTML = $(this).html();
        $(this).empty().html(inrHTML);
    }
});

应该是更好的方法(基于大多数“嵌入式 youtube”视频都在 iframe 中的想法,我认为

$("#gallery_reel").dialog({
    autoOpen: false,
    width: 540,
    close: function() {
        $(this).find("iframe").get(0).stopVideo();
    }
});

【讨论】:

  • 关闭功能不会停止 youtube 视频。
  • 不,但这不可避免地会删除对话框中的原始 HTML,并将其替换为原始 html 的副本,因此视频应该停止,可以这么说
【解决方案2】:

停止 Youtube 视频:

$('#playerID').get(0).stopVideo();

来自Stop a youtube video with jquery?

【讨论】:

  • 当我使用 Youtube 提供的 iframe 嵌入代码时,我的播放器 ID 是什么?
【解决方案3】:

这是因为当您“销毁”时,您会将映射的 var 从 jQuery 堆栈中弹出。

varname = new $("#gallery_reel").dialog(.....); 

将其弹出回堆栈

这里的问题是你需要销毁还是关闭对话框。

正确使用变量并在它们离开页面而不是关闭对话框时进行清理可以解决此问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多