0

ajax経由でコンテンツをロードするjquery uiダイアログがあります:

$('#register').click(function(e) {
    var tag = $('<div></div>');
    $.ajax({
        url: 'signup.html',
        success: function(data) {
            tag.html(data).dialog({modal: true}).dialog('open');
        }
    });
    e.preventDefault();
    return false;
});

送信ボタンが押されたときにダイアログを閉じることになっているコンテンツ内に2番目のスクリプトがあります

$(function() {
    $('form #submit').click(function(e) {
        $(this).parents('.ui-dialog').dialog('close');
        e.preventDefault();
        return false;
    });
});

送信ボタンをクリックすると、次のエラーが表示されます。

不明なエラー: 初期化の前にダイアログでメソッドを呼び出すことはできません。メソッド「close」を呼び出そうとしました

ajax経由でロードされたコンテンツからダイアログを閉じることができないのは何ですか?

4

2 に答える 2

1

$('.ui-dialog') $('.ui-dialog ...')`dialog('close')の要素を呼び出す必要があります。dialog('open') was called before. You're calling the function oninstead of

コードで tag 要素の id または class を定義する必要があります。

var tag = $('<div id="signup-id"></div>');

次に、次のようにクリック ハンドラーで正しい要素を見つけます。

$(this).parents('.ui-dialog').children('#signup-id').dialog('close');

: idを持つ要素が決して含まれていないことが確実な場合と#signup-id同様に、クリックハンドラーで直接見つけることができます。$(this).children('#signup-id')signup.htmlsignup-id

于 2013-10-09T13:03:34.920 に答える
0

タグダイアログをhtmlで定義する

<div id="tag_dialog" style="display:none">
</div>

次に、ドキュメントの準備ができたら:

$(document).ready(function(){
    $('#tag_dialog').dialog({
        modal:true,
        autoOpen:false,
        //you could give some other options such as width, height .....
    });
    $('#register').click(function(e) {
       $.ajax({
           url: 'signup.html',
           success: function(data) {
               $('#tag_dialog').html(data).dialog('open');
           }
       });
       e.preventDefault();
       return false;
   });
    $('form #submit').click(function(e) {
        $('#tag_dialog').dialog('close');
        e.preventDefault();
        return false;
    });
});
于 2013-10-09T12:32:27.090 に答える