IE に問題があります。私のアプリには、ユーザーが表示できるダイアログがあります。ダイアログは、AJAX 呼び出しからのデータを使用して作成されます。次に、ボタンの 1 回限りのイベント ハンドラーを登録します。FF、Chrome、Safariでは問題ありません。ダイアログが表示され、ボタンが機能します。これは長い間機能しています。
IE では、ダイアログは表示されますが、イベント ハンドラーが起動しない場合があります。ボタンをクリックしても何も起こりません。これは常に起こるわけではありません。これまでのところ、IE を開いて最初にページを表示したときに発生するようです。ダイアログを閉じて再度開くと、修正されることがあります。ページをリロードすると修正される場合があります。修正されると、ページのリロードに関係なく、再び失敗することはないようです。問題を再発させるには、IE を終了する必要があります。開発者ツールを開くと問題がなくなるため、開発者ツールを使用できませんでした。
$('#btn_school_choices').button('loading');
$.ajax({
type: 'GET',
url: 'ajax/optimized_colleges.php',
dataType: 'json',
success: function(data, status, xhr) {
// Some code to prepare the data returned
// Build the dialog using the data and add to DOM
$('#modal_opt_in').html(ich.dialog_optimize_college_selection(optinData));
$('#btn_school_choices').button('reset');
// Add Event Handler to Button in Dialog
$('#btn_add_colleges').one('click', function() { ... }
// Show the Dialog
$('#modal_opt_in').modal({backdrop: 'static', show: true});
error: function(xhr) { ... }
});
on() と off() を使用してみましたが、同じ問題が発生します。この時点で、私は約 2 週間にわたってこれを修正しようとしてきました。どんな助けでも大歓迎です。
ボタンは 2 行前に DOM に追加されるため、イベント ハンドラーの登録時に存在する必要があります。(イベントハンドラーが失敗してもダイアログはボタンで表示されるので、イベントハンドラーを登録する前の2行とイベントハンドラーの後の行が機能します。