blur
イベントでコンテキストメニューをうまく非表示にしようとした人はいますか? 私がやりたいことは、マウスがコンテキスト メニュー内に配置されていないときに、カスタマイズされた右クリック メニューを非表示にすることですdiv
。
これは、jquery コンテキスト メニュー プラグインを使用します。
blur
イベントでコンテキストメニューをうまく非表示にしようとした人はいますか? 私がやりたいことは、マウスがコンテキスト メニュー内に配置されていないときに、カスタマイズされた右クリック メニューを非表示にすることですdiv
。
これは、jquery コンテキスト メニュー プラグインを使用します。
フォーカスがコンテナーの領域を離れるタイミングを知りたいが、コンテナー内の子コントロールがイベントをトリガーしないようにする場合は、 を使用しますmouseleave
。
$('#menu').on('mouseleave', function(){
$(this).hide();
});
mouseout
またはblur
、このシナリオでは必要ありません。コンテナー内の子コントロールがマウス フォーカスを受け取るとトリガーされ、それらを含むメニューが非表示になるためです。
コールバックでぼかしを使用します。ただし、テストされていません。他のぼかしの右クリック機能を復元しますか? これは、他の種類のイベントでより適切に実行されると思います。
$("input").blur(function () {
window.oncontextmenu = function () {
return false;
}
});
あなたはイベントについて明示的に言及していますが、あなたが言及したコンテキストメニューはおそらく焦点が合ったりぼやけたりすることはないblur
ので、それが実際に必要なものではないと思います。div
mouseoutイベントを使用する必要があります。
コンテキストメニューのIDが「contextMenuContainer」であるとすると、これでカバーされます。
$('#contextMenuContainer').mouseout(function() {
$(this).hide();
});
詳細については、jQueryイベント/マウスアウトのドキュメントを参照してください。
アップデート:
リンク先のプラグインページにmouseoutイベントハンドラーを登録してみましたが、問題なく起動していました。ただし、メニュー項目を変更するたびに発生することに注意してください。そのため、イベントターゲットをチェックして、マウスが実際にメニュー全体を終了したことを確認する必要があります。