3

「noty_menu」リンクをクリックすると開き、そのリンクをもう一度クリックすると閉じるスライド式のJSメニューがあります。ページのどこかをクリックしたときにメニューが閉じるように設定する方法はありますか?

関連するコードは次のとおりです。

$('.noty_menu').click(function () {
$('ul.the_menu').slideToggle('medium');
});

前もって感謝します!

4

3 に答える 3

4

あなたは体のクリックをキャッチすることができます:

$('body').click(function() {
    /* close menu */
});

ただし、メニュークリックでは、クリックが本体に伝播しないようにする必要があります。それ以外の場合は、メニューが開き、クリックが上に伝播し、メニューがすぐに閉じます。return false;ここで十分です:

$('.noty_menu').click(function () {
    $('ul.the_menu').slideToggle('medium');
    return false;
});

(のようにハンドラー関数のイベント引数を読み込んでfunction(ev) { ... }呼び出すこともできますev.stopPropagation())。

メニュー内のクリックでメニューが閉じないようにすることもできます。

$('ul.the_menu').click(function () {
    return false;
});

このソリューションには、伝播を停止する他のクリックイベントもメニューを閉じるのを妨げるという警告があります。

于 2012-04-08T19:15:39.780 に答える
2

あなたは使用することができます

$('body').click(function(){
//ur code
});

これをする

于 2012-04-08T19:16:08.313 に答える
2

ドキュメント全体を確認できますが、次のような方法でメニューのクリックが含まれます(間隔がある場合は、ユーザーを煩わせる可能性があります)。

var menu=$('ul.the_menu');
$(document).on('click',function(){
    if(menu.height>0) {
        menu.slideToggle('medium');
    }
});
于 2012-04-08T19:17:00.333 に答える