以下是代码,当鼠标悬停在li
项目上时,标签会动画并增长到270px
同时打开包含输入字段的相同宽度的下拉列表div
,但是当我移动时鼠标离开dropdown
div或尝试从下拉关闭的选项列表中选择一些东西,我想要一些延迟或其他解决方案来解决这个问题
$(function() {
/**
* the menu
*/
var $menu = $('#ldd_menu');
/**
* for each list element,
* we show the submenu when hovering and
* expand the span element (title) to 270px
*/
$menu.children('li').each(function(){
var $this = $(this);
var $span = $this.children('span');
$span.data('width',$span.width());
$this.bind('mouseenter',function(){
$menu.find('.ldd_submenu').stop(true,true).hide();
$span.stop().animate({'width':'270px'},300,function(){
$this.find('.ldd_submenu').slideDown(300);
});
}).bind('mouseleave',function(){
$this.find('.ldd_submenu').stop(true,true).hide();
$span.stop().animate({'width':$span.data('width')+'px'},300);
});
});
});
答案 0 :(得分:0)
在jQuery中并不完全确定,但在直接javascript中点击该项目会让它集中注意力并保持焦点直到你点击其他地方,所以你要做的是测试失去焦点(我猜测mouseenter / mouseleave检查鼠标是否悬停在该项目上。)
定时器并不是真正的方法,因为不同的人可能会比其他人更长时间地思考菜单上的选项,并且你想让他们自由地做到这一点。
答案 1 :(得分:0)
尝试添加delay()
:
....bind('mouseleave',function(){
$this.find('.ldd_submenu').delay(300).stop(true,true).hide();
$span.delay(300).stop().animate({'width':$span.data('width')+'px'},300);
});