111

ダイアログが正常に機能するjquery1.5のアプリがあります。.liveハンドラーはたくさんありますが、これを.onに変更しました。そのためには、jqueryを更新する必要があります(現在は1.8.3、jquerui 1.9.1)。

今、私は得ました:Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'

コードは次のとおりです。

Javascript

var opt = {
        autoOpen: false,
        modal: true,
        width: 550,
        height:650,
        title: 'Details'
};

$(document).ready(function() {
$("#divDialog").dialog(opt);
    $("#divDialog").dialog("open");
...    

htmlコード

<div id="divDialog">
<div id="divInDialog"></div>
</div>

なぜこれが起こっているのか考えていますか?

4

11 に答える 11

145

代わりにこれを試してください

$(document).ready(function() {
  $("#divDialog").dialog(opt).dialog("open");
});

次のこともできます。

var theDialog = $("#divDialog").dialog(opt);
theDialog.dialog("open");

これは、ダイアログが に保存されているのではなく、その場で作成され、関数$('#divDialog')によって返される新しい div に保存されているためです。.dialog(opt)

于 2012-11-22T21:36:30.130 に答える
10

jqueryui ライブラリを並行して更新せずに jquery ライブラリのみを更新すると、このエラーが発生しました。jqueryui 1.9.0でjquery 1.8.3を使用していました。ただし、jquery 1.8.3 を 1.9.1 に更新すると、上記のエラーが発生しました。問題のあるメソッド行をコメントアウトすると、.close見つからないというエラーがスローされました.browserjquery 1.8.3 で廃止され、jquery 1.9.1 から削除された jquery ライブラリ内。基本的に、jquery 1.9.1 ライブラリは、jquery 1.6+ で動作するという jquery ui ダウンロード ページにもかかわらず、jquery ui 1.9.0 ライブラリと互換性がありませんでした。基本的に、2 つの異なるバージョンを使用しようとすると、報告されていないバグがあります。jqueryui のダウンロードに同梱されているバージョンの jquery を使用する場合は問題ないと思いますが、別のバージョンを使用し始めると、常軌を逸してこのようなエラーが発生します。したがって、要約すると、このエラーはバージョンの不一致によるものです (私の場合はとにかく)。

于 2013-03-12T20:51:22.130 に答える
0

親ビューではなく部分ビューに div タグがあったため、このエラー メッセージが表示されました

于 2015-03-31T15:28:29.520 に答える
0

これもいくつかの回避策です。

$("div[aria-describedby='divDialog'] .ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-icon-only.ui-dialog-titlebar-close").click();
于 2014-03-15T17:03:29.673 に答える