概要:基本的なjqueryuiダイアログが定義され、後でマークアップが挿入されてオンデマンドで開かれます。
問題:最初の例は機能しますが、2番目の例(一見似ている)は機能しません。開いた順番に違いはありません。動作していないものを先に開いても動作しません。私が明らかに鈍いことをしたかどうかを確認するために、2番目の目をいただければ幸いです。
注:これらは大きなコードフィールドからのスニペットであるため、plsは一致する括弧をチェックしません。アスタリスクで囲まれた2番目のjqueryuiダイアログを除いて、すべてのコードが機能しています。Ajaxは正しいデータなどを返します。2番目のダイアログの上のアラートも機能しますが、そのダイアログは表示されません(コード内のアラートの有無にかかわらず)。
2番目のダイアログ呼び出しはajaxコールバック関数内にあります。返されたデータを#alertdivにバインドするには、どういうわけか.on()メソッドを使用する必要がありますか?(私はそうは思わないでください...少なくともdiv-空のdlgボックス-が表示されるはずです、違いますか?)もしそうなら、それはどのように見えるでしょうか?
HTML:
<div id="alert" title="Alert"></div>
JAVASCRIPT:
$(function() {
$( '#alert' ).dialog({
autoOpen:false,
});
$(document).on('click', '.mledit', function(event) {
//company_id is actually the user_id
var user_id = this.id.split( 'editcopro_' )[1];
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: 'request=edit_company_data&user_id='+user_id,
success:function(data){
$('#co_label').html(data);
$('#co_label').dialog({
autoOpen: true,
height: 600,
width: 800,
modal: true,
buttons:
{
//***************************************
//******** THIS WORKS *******************
Test: function() {
$( '#alert' ).html( 'Hello there' );
$( '#alert' ).dialog( 'open' );
return false;
//***************************************
},
//... etc ...
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: 'request=index_list_contacts_for_client&user_id=' + user_id,
success: function(data) {
$('#contact_table').html(data);
var tbl = $('#injected_table_of_contacts');
$(this).dialog({
autoOpen: false,
height: 400,
width: 600,
modal: true,
buttons:
{
Okay: function() {
$.ajax({
type: "POST",
url: "ajax/ax_all_ajax_fns.php",
data: 'request=update_edited_contact_data&contact_id='+contact_id+'&fn='+fn+'&ln='+ln+'&em='+em+'&cp='+cp,
success: function(data) {
alert(data);
//**********************************
//***** THIS DOES NOT: *************
$( '#alert' ).html( data );
$( '#alert' ).dialog( 'open' );
//**********************************
window.location = '' //THIS LINE AUTO-CLOSES THE DLG!;
}
});
$( this ).dialog( "close" );
} //END ELSE
},
Cancel: function() {
$( this ).dialog( "close" );
window.location = '';
}
} /*,
//IMPORTANT DISCOVERY: Having this close section AUTO-CLOSES the prev dialog popup!
close: function() {
//alert('here i am');
window.location = 'index.php';
}*/
})
}
});
});
/*********** >Snip< *************/
完全なコードは巨大です(r)ので、質問に必要なビットを切り取りました。一致する括弧などを注意深く見すぎないでください。alert()は正常に機能します。これは.dialog()呼び出しだけであり、2番目の呼び出しだけです。以前のものは正常に機能します(内部からのダイアログ呼び出しを含む)。ダイアログ)。