Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery 1.11.2无法在初始化之前调用对话框上的方法;试图调用方法';摧毁';_Javascript_Jquery_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

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

Javascript JQuery 1.11.2无法在初始化之前调用对话框上的方法;试图调用方法';摧毁';,javascript,jquery,jquery-ui,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Jquery Ui Dialog,我最近使用jquerymigratev1.2.1从jquery1.3(我知道,我知道,这个项目已经有6年历史了,我正在从另一个开发人员那里接管它,希望它能……正确地完成)升级到1.11.2,因为从一个版本升级到另一个版本可能会花费我的余生 不管怎么说,我遇到了一些小问题,大部分问题我都能修复,但这一点让我感到困惑。下面的代码在1.5.1中运行得非常好,但在1.11.2中抛出此错误“初始化之前无法在对话框上调用方法;试图调用方法‘destroy’。 代码如下: $(document).ready(

我最近使用jquerymigratev1.2.1从jquery1.3(我知道,我知道,这个项目已经有6年历史了,我正在从另一个开发人员那里接管它,希望它能……正确地完成)升级到1.11.2,因为从一个版本升级到另一个版本可能会花费我的余生

不管怎么说,我遇到了一些小问题,大部分问题我都能修复,但这一点让我感到困惑。下面的代码在1.5.1中运行得非常好,但在1.11.2中抛出此错误“初始化之前无法在对话框上调用方法;试图调用方法‘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");
    }

错误消息清楚地描述了什么是错误的。您试图在对话框存在之前打开或销毁它。您需要首先确保它是一个对话框,然后再尝试销毁或打开它。我建议测试一下它是否有ui对话框类。我明白它在说什么,但我不明白的是,为什么这个在以前的版本中可以工作,而不是这个版本?这似乎是一个相当标准的问题,如果对话框不存在,那么无论版本如何,它都不存在,不是吗?因为库几乎是重新编写的?为什么添加此要求是一个需要针对jQuery UI开发团队的问题。我认为如果它只是默默地忽略调用而不是抛出错误会更好,尽管我相信他们有一些很好的理由让它抛出错误。谢谢,我想我的好奇心征服了我:)谢谢你的帮助。我还发现一篇帖子说,最新的JQuery不允许对未初始化的项调用方法。我很感激!