私はjQuery.dialog
(jQuery 1.7.1、jQuery-UI 1.8.18)で表示しているダイアログのあるWebページを持っています。私は次のように作成します:
$(theDialog).dialog({
autoOpen: false,
width: "800px",
modal: true, // etc....
});
<div>
同じページに、要素のスタックから作成したリスト コントロールがあります。<div>
積み上げられた要素のクリックを次のように聞きます。
$("#listEmployees div").on("click", "input", listEmployees_ItemClicked);
listEmployes_ItemChecked
私のイベントハンドラはどこですか。jQuery ダイアログを表示すると、HTML ページのほとんどの要素が無効になっています。つまり、マウスのクリックに反応しません&c。ただし、リストのスタックはそうではありません。リスト内のアイテムをクリックすると、イベント ハンドラーが呼び出されます。
この問題を回避するには、ページにグローバル変数を導入する必要がありました。この変数はisDialogVisible
、ダイアログを開くときに設定し、閉じるときにクリアします。グローバル変数が true の場合、イベント ハンドラーはイベントを無視します。言うまでもなく、これはハックであり、うまくスケーリングできません。
私の期待は、dialog
モーダルである jQuery が開いている間、これらの要素からのすべての HTML 要素とイベントを無効にすることでした。この期待は間違っていますか?モーダル ダイアログが表示されているときにまだマウス クリックが表示されるのはなぜですか?