我最近从JQuery 1.3“升级”(我知道,我知道,这个项目已有6年历史,我将其从另一个开发人员那里接管,希望能够完成它......正确)到1.11.2,使用JQuery Migrate v1.2.1,因为版本到版本可能会让我度过余生。
无论如何,我遇到的是最小的问题,其中大部分是我能够修复的,但是这个问题让我很难过。以下代码在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而不是其他版本。
任何帮助都将不胜感激,如果有人能指出我正确的方向,我不反对自己搞清楚。
谢谢!
答案 0 :(得分:3)
在对话存在之前,您无法销毁或打开对话框。我建议事先创建对话框,然后稍后再打开或关闭它。
$(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");
}