JQuery 1.11.2 无法在初始化之前调用对话框的方法;试图调用方法 'destroy'

JQuery 1.11.2 cannot call methods on dialog prior to initialization; attempted to call method 'destroy'

我最近 'upgraded' 从 JQuery 1.3(我知道,我知道,这个项目已有 6 年历史了,我正在从另一个开发人员那里接手,希望能完成它.. .properly) 到 1.11.2,使用 JQuery 迁移 v1.2.1,因为从一个版本到另一个版本可能会花费我余生。

无论如何,我遇到的问题很少,其中大部分我都能修复,但是这个问题让我很困惑。以下代码在 1.5.1 中运行良好,但在 1.11.2 中抛出此错误 "Cannot call methods on dialog prior to initialization; attempted to call method 'destroy'".

代码如下:

$(document).ready(function() {
    setupEvents();
});

function setupEvents() {
    $('.dmr-id').click(function(e) {
        e.preventDefault();
        loadConsumerServiceDialog();
    });

    function loadConsumerServiceDialog() {
        $('#consumer-service-dialog').dialog("destroy");
        $('#consumer-service-dialog').dialog("open");

        $('#consumer-service-dialog').dialog({
            modal: true,
            height: 740,
            width: 1000,
            title: 'Consumer Service Detailed Relations',
            resizable: false
        });
    }

如果我添加注释 'destroy' 方法,它会在 'open' 方法上抛出相同的错误。这似乎是一个明显的错误,对话框没有初始化,但是如何在打开之前初始化它呢?我不明白为什么它在 1.11.2 而不是其他版本中被抛出。

任何帮助将不胜感激,如果有人能指出正确的方向,我不反对自己弄清楚。

谢谢!

您不能在对话框存在之前销毁或打开它。我建议先创建对话框,然后再打开或关闭它。

$(document).ready(function() {
    setupEvents();
});

function setupEvents() {
    var consumerServiceDialog = $('#consumer-service-dialog').dialog({
        modal: true,
        height: 740,
        width: 1000,
        title: 'Consumer Service Detailed Relations',
        resizable: false,
        autoOpen: false
    });
    $('.dmr-id').click(function(e) {
        e.preventDefault();
        loadConsumerServiceDialog();
    });

    function loadConsumerServiceDialog() {
        //consumerServiceDialog.dialog("destroy"); // why destroy it?
        consumerServiceDialog.dialog("open");
    }