0

別のdivをクリックするとメニュー(div)が表示されるこのコードを作成しました。問題は、メニューの 1 つを開いて div をクリックして新しいメニューを開くと (ループ アウトされた複数のメニューがある)、他のメニューが閉じないことです。これは、div/メニューの外側をクリックしない限り、無制限の数のメニューを同時に開くことができることを意味します...

短い: クリックして新しいメニューを開くときに、開いているすべてのメニュー div を非表示にしたいのですが、開いたばかりのメニューを除きます...

コード:

$('.commentSettings').click(function(e) {
    var id = $(this).attr('id');
    $('#mod-dropdown' + id).stop().toggle(200);
    e.stopPropagation();
    $('#mod-dropdown' + id).show();

    $(document).click(function(){
        $("#mod-dropdown" + id).hide();
    });
 });
4

4 に答える 4

1

たとえば、クラスを非表示にするすべてのdivを指定した場合、クリック関数の開始時にmenuポップするだけで済みます。$('.menu').hide();

関数内にドキュメントが用意されていることに注意してください。ドキュメントをそこに配置したいとは思わないでしょう。document.ready関数が常に最初に表示され、その中にイベントハンドラーを登録する必要があります。

于 2013-02-10T20:10:14.043 に答える
0

すべてのメニューに共通のクラスがあると思います。これを使用して、最初にすべてのメニューを閉じます。次に、現在クリックしているものを開きます。

于 2013-02-10T20:08:51.170 に答える
0

あなたはこのようなものを持つことができます:

var id = -1;
$('.commentSettings').click(function(e) {
    if( id != -1 )
        $('#mod-dropdown' + id).hide();
    var id = $(this).attr('id');
    $('#mod-dropdown' + id).stop().toggle(200);
    e.stopPropagation();
    $('#mod-dropdown' + id).show();

    $(document).click(function(){
        $("#mod-dropdown" + id).hide();
    });
});
于 2013-02-10T20:10:40.900 に答える
0

これはうまくいくはずです:

 $('.commentSettings').click(function(e) {
    var id = $(this).attr('id');
    $('#mod-dropdown' + id).stop().toggle(200);
    e.stopPropagation();
    $('#mod-dropdown' + id).show();
 });

 $(document).click(function(){
    $('[id^="#mod-dropdown"]').hide();
});

ここでは jQueryattributeStartsWithセレクターを使用します。

ここで見つけることができる詳細情報: http://api.jquery.com/attribute-starts-with-selector/

于 2013-02-10T20:11:28.963 に答える