问题与鼠标悬停,鼠标移出在JQuery的菜单
我试图仿效http://www.clydeproperty.com/我想将鼠标悬停在菜单中的一个菜单的,使一个jQuery.load()
调用来获取菜单选项,然后slideDown()
包含选项的股利。问题与鼠标悬停,鼠标移出在JQuery的菜单
然后,我想让菜单保持打开状态,直到您移动到页面上的其他任何位置,除了进入打开菜单:在下面的示例中,这将是menuOptions div。
<div class="menu"><a id="Products" href="#">Products</a></div>
<div class="menu"><a id="Services" href="#">Services</a></div>
<div class="menu"><a id="Contact" href="#">Contact Us</a></div>
<div id="menuOptions"></div>
我目前使用以下jQuery的显示菜单:
$('.menu').mouseover(function(){
$('#menuOptions').load('./MenuOptions.html #' + $(this).children('a').attr('id'), function(){
$('#menuOptions').stop().slideDown(1200);
});
});
我已经使用$('.menu').mouseout
事件试过,但这个当然会火的,只要你进入菜单!这让我疯狂,所以任何帮助都非常感谢。
我想过的一种方式是添加一个几乎否定的选择器来为除了.menu和#menuOptions之外的所有内容添加一个mouseover事件,但我知道这远非最佳解决方案!
为什么不把mouseout事件附加到#menuOptions
标记上,因为这是你希望保持打开的状态,直到你移动到页面的其他位置?
要确保您一次没有打开多个菜单,请将trigger()
事件附加到其他*菜单项(即产品,服务等),以便打开任何#menuOptions
div标签在你想要的一个打开之前关闭。这个触发器会触发每个#menuOptions
div的mouseout事件。
我会把一个单独的.menuOptions div放在每个.menu div(绝对位置)。这样你可以加载每个特定的一个,并使用mouseout事件来关闭它自己。你将需要给它一个类而不是一个id,因为它们会有几个。
然后使用jQuery的。菜单类中找到DIV,如:
$('.menu').find('.menuOptions')
希望有所帮助。
我试图避免使用1菜单选项,以便我可以加载AJAX选项,但如果这是最好的解决方案,那么我会检查出来。谢谢。 – Fermin 2009-10-26 20:54:01
如果你将鼠标悬停在一个.menu打开一个,但没有进入它,那么mousemen就不会打开#menuOptions,所以mouseout永远不会触发? – Fermin 2009-10-26 21:07:43
这就是为什么你需要使用trigger()函数。看看这里:http://docs.jquery.com/Events/trigger – 2009-10-26 21:15:46
使用trigger()函数,你可以有效地告诉jQuery,“嘿!当你看到这个项目的一个事件,为这个事件发起事件项目在那里“。 – 2009-10-26 21:17:03