2013-03-22 76 views
2

我在我的链接幻灯片上得到了这个子菜单,事情是当我点击关闭子菜单,如果我将光标移动到其他地方,但'幻灯片'链接工作正常,但如果我关闭它,我的光标留在链接上.hover的触发器是tigger,所以我得到了一个“活动”链接,没有任何显示。jquery toggleclass hover

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); 
     } 
    }); 

回答

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'); 
    } 
}); 

DEMO

+0

太棒了!非常感谢你,我的朋友。 – novoa 2013-03-22 14:02:47

2

最好使用mouseentermouseleave而不是hover

$(".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); 
     } 
    } 
}); 

在那里,完成! jsFiddle

你有这个$(this).toggleClass('border_active border', 500);这也触发了border

+0

我明白了,我不喜欢这样,但现在没有什么发生? http://jsfiddle.net/6GPtg/17/ – novoa 2013-03-22 13:50:29

+0

是的我也试图自己,我往往有一些错别字 – 2013-03-22 13:51:38

+0

检查此:http:// jsfiddl几乎,谢谢,e.net/6GPtg/32/ – 2013-03-22 14:00:16