質問: ダイアログを閉じて、再度開くとイベントが2重で発生してしまう。 $(document).on('keypress', ~ を使った場合に、2重で読み込まれない方法はないでしょうか。 下記のソースでダイアログを作成。 ``` $('#body div').after(''); var $dialog= $('#dialog'); $dialog.dialog({ autoOpen: false, modal : true, width : 700, height : 'auto', position: ['30', 'center'], close : function (event) { $(this).dialog("destroy"); $(event.target).remove(); } }).dialog('open'); $.ajax({ type : 'post', url : '', data : data, dataType : 'html' }).done(function (re) { $dialog.empty().html(re); }).fail(function () { }).always(function() { }); ``` ダイアログを開いた時に下記のソースを含めたファイルを読み込む。 動的に作成されたテキストボックスをエンターしたときに、イベントを起こしたいので、 $(document).on('keypress', を使っています。 ``` ```
回答: スクリプト要素を消してもイベントは消えないので、Ajaxでスクリプトを埋め込む仕様をやめるか、削除する前に特定のイベントを外しておくくらいでしょうか。 【script タグを動的に削除しても、スクリプトは動作するのだろうか - Qiita】 【jQuery.fn.onに名前空間をつけることができる - Qiita】