2012-10-29 125 views
1

我正在使用jQuery-ui的菜单功能。看到我的example fiddlejquery-ui的菜单

我的问题是,当您将鼠标悬停在菜单上并退出时,所有子菜单也会退出。但是当你在子菜单中并且你离开时,子菜单将保持打开状态。它不会关闭,直到你点击菜单外

我尝试添加该代码,但它不会工作:

$("#menu").mouseleave(function(){ 
    $(".ui-menu-item").collapseAll(); 
}); 

我想要的子菜单中消失过一次,我用鼠标离开

+4

为什么要禁止任何人对你要求上述??? – techfoobar

+0

它会对我说“缺乏搜索努力” –

+0

@RolandFeghaly:如果你正确地发布了一个问题,做你的研究并展示一些代码(希望用小提琴),你的问题总是会受到欢迎 –

回答

2

我觉得你这会有所帮助。

<ul>标记添加类submenu

HTML

<ul id="menu"> 
    <li><a href="#">Item 1</a></li> 
    <li><a href="#">Item 2</a></li> 
    <li><a href="#">Item 3</a> 
     <ul class="submenu"> 
      <li><a href="#">Item 3-1</a></li> 
      <li><a href="#">Item 3-2</a></li> 
      <li><a href="#">Item 3-3</a></li> 
      <li><a href="#">Item 3-4</a></li> 
      <li><a href="#">Item 3-5</a></li> 
     </ul> 
    </li> 
    <li><a href="#">Item 4</a></li> 
    <li><a href="#">Item 5</a></li> 
</ul> 

JQuery的

$(".submenu").mouseout(function(){ 
    $(".submenu").hide(); 
}); 
$(".submenu").mouseover(function(){ 
    $(".submenu").show(); 
}); 

演示网址:http://api.jquery.com/mouseout/

+0

呃,鼠标悬停是不是会打开所有子菜单?也许你的意思是$(this).show/hide()? – Cuse70

2

UPDATE:

我找到更好的文档在http://api.jqueryui.com/menu/,它好像你要使用的collapseAll方法上mouseleave。此更新小提琴:http://jsfiddle.net/FwBNE/7/

$(document).ready(function() { 
    var menu = $("ul.menu").menu(); 
    $(menu).mouseleave(function() { 
     menu.menu('collapseAll'); 
    }); 
});​ 

ORIGINAL:

这似乎工作:

$(document).ready(function() { 
    var menu = $("div#menu > ul.menu").menu(); 
    menu.menu('widget').hide(); 
    $('div#menu').hover(function() { 
     menu.menu('widget').show(); 
    }, function() { 
     menu.menu('widget').hide(); 
    }); 
    $(menu).hover(function() { 
     menu.menu('widget').show(); 
    }, function() { 
     menu.menu('widget').hide(); 
    }); 
});​ 

更新小提琴:http://jsfiddle.net/FwBNE/4/

+0

我很感谢你的帮助,但为什么你隐藏了第一个菜单,不能和第一个菜单一样显示? –

+0

我在urs上做了一些改变,http://jsfiddle.net/GdBTc/1/,但仍然有一个亲,如果你离开,边界仍然在菜单 –

+0

如果你想第一个菜单总是打开,那么你的原始小提琴(http://jsfiddle.net/FwBNE/)做你想做的事情(无论如何,在Chrome中)。是否有一个特定的浏览器,你看到这个问题? – pete