3

私はいくつかのサブメニュー、モーダルウィンドウ、ヒントなどを使用している巨大なアプリに取り組んでいます.

さて、私が知りたいのは、Escそのようなアプリで外部イベントを処理してクリックする適切な方法です。

$(document).keyup(function(e) {
    if (e.keyCode == 27) { ... } 
});

これは、キーの押下を処理するために使用しEscます...発生するイベントが1つしかない場合、これは簡単です...

1. クリックするとモーダル ウィンドウが開きます 2. モーダル ウィンドウ内をクリックするとドロップダウン メニューが開きます 3. メニュー項目にマウスを合わせるとツールチップが開きます

を押すEscと、最初にツールチップが閉じ、もう一度押すとメニューが閉じ、最後にモーダル ウィンドウが閉じます。

これを処理する適切な方法は何ですか?

外側をクリックする場合も同様です...

モーダルウィンドウの外側をクリックすると、モーダルウィンドウ全体(メニューとツールチップを含む)が閉じますが、メニューの外側をクリックすると、メニューとツールチップが閉じます

4

1 に答える 1

2

開いているウィンドウ、ダイアログなどごとに、ページ レベル (グローバル) スタックに追加されます。

document.keyup イベントは、ESC キーを押すと、スタックから最後の項目をポップして閉じます。

理想的には、これは制御を反転するように洗練できるため、document.keyup はイベントをスタックの最後のアイテムに渡すだけで、それ自体を閉じてスタックから削除することを処理します。

また、別の方法で閉じられたアイテムを追跡してスタックから削除する必要があります。これは、制御の反転が有益な場合です。

于 2012-09-06T18:16:57.377 に答える