1

HTMLがajaxによってロードされたjQueryUIダイアログを開こうとしていますが、アラートが表示されるだけです。

    $(document).on("click",'#dialog-button',function(){
        alert('this works');
        $('#dialog').dialog('open');//this doesn't
    });

ajax(および.on)を使用せずにhtmlをテンプレート内に配置すると、問題は発生しません。

ダイアログhtmlは、これに似たもののようにajaxによってロードされます。

$.ajax({

type: "GET",
dataType: "json",
url: href,

success: function(data){

$('#dialog-container').html(data.dialog);

}

});

そして私のphpで私はこのようなことをします:

<?php 
 //assign some variables
 $array = array('dialog' => $this->smarty->fetch('dialog.tpl'));
 echo json_encode($array);
 ?>

これは機能します:

$(document).on("click",'#dialog-button',function(){

    alert('this works');

    $('#dialog').dialog({

    autoOpen : true,
    height   : 500,
    width    : 1000,
    modal    : true,
    buttons  : {

        save  : function() {

            sendForm();
            $(this).dialog('close');

        },

        cancel : function() {

            $(this).dialog('close');

        },

        close    : function(){

            allFields.vall('').removeClass('ui-sate-error');

        },

    }

})

})
4

1 に答える 1

1

ダイアログの内容を読み込んだ後、実際にダイアログ ボックスを作成する必要があります。

success: function(data) {
    $('#dialog-container').html(data.dialog);
    $('#dialog').dialog({
       ...,
       autoOpen: false
    });
},

そして、上記のコードは実際にそれを表示します:

$(document).on("click",'#dialog-button', function() {
    $('#dialog').dialog('open');
});

が最初は非表示になっていることを確認してください。#dialogそうしないと、ダイアログの内容がダイアログに変わる前にページに表示されます。

于 2013-03-11T18:05:11.853 に答える