2

リンクSLIDEでこのサブメニューを取得しました。カーソルを別の場所に移動するとサブメニューをクリックして閉じると、「SLIDE」リンクは正常に機能しますが、それを閉じてカーソルがリンクにとどまると.hover の toggleclass は tigger であるため、リンクが「アクティブ」になり、何も表示されません。

http://jsfiddle.net/6GPtg/13/

どうすれば修正できますか、これは私を夢中にさせています...ありがとう

    $(".border").hover(function(){
        if($(this).next('.sous_menu').is(':visible')){
            $('.sous_menu').closest('.border').removeClass('border').addClass('border_active');

        }else{
            $(this).toggleClass('border_active border', 500);
        }
    });
4

2 に答える 2

2

の代わりにmouseenterandを使用することをお勧めします。mouseleavehover

$(".border").on({
    "mouseenter": function(){
        if($(this).next('.sous_menu').is(':visible')){
            $('.sous_menu').closest('.border').removeClass('border').addClass('border_active');
        }else{
            $(this).addClass('border_active', 500);
        }
    },
    "mouseleave": function(){
        if($(this).next('.sous_menu').is(':visible')){
            $('.sous_menu').closest('.border').removeClass('border').addClass('border_active');
        }else{
            $(this).removeClass('border_active', 500);
        }
    }
});

やった!jsフィドル

これ$(this).toggleClass('border_active border', 500);borderクラスを切り替えました

于 2013-03-22T13:46:50.923 に答える
1

これを試して:

$(".border").click(function (e) {
    $(".sous_menu").slideUp('fast');
    if ($(this).next('.sous_menu').is(':visible')) {
        $(this).next(".sous_menu").slideUp('fast');
        if(!$(this).hasClass('border_active'))
        $(this).toggleClass('border_active border', 500);
    } else {
        $(this).next(".sous_menu").slideDown('fast');
    }
});

デモ

于 2013-03-22T14:00:27.730 に答える