2010-03-05 32 views
1

我正在尝试在jquery中创建一个菜单面板,除了一个问题外,它们都是完整的。当我将鼠标悬停在链接上时,它会显示一个黑色面板,我希望只有当鼠标不在黑色面板区域时才能隐藏该面板。目前,即使我在黑盒子里,它也会淡出。JQuery MouseOut事件问题

下面是脚本,您可以通过点击预览链接有看到的预览,并有编辑过:

http://jsbin.com/adofe/edit

这应该是一个非常简单有经验的JQuery的编码器,我没有玩过这么多,所以无法弄清楚。

感谢

回答

2

当您只提供一个悬停参数时,它将其用于鼠标输入和鼠标离开。

您应该使用悬停而不是鼠标事件。

第一次调用悬停时,提供一个空白选项作为第二个参数。

第二次调用悬停时,提供空白函数作为第一个参数。

这可以防止对同一功能进行多次调用。

我会说使用mouseenter和mouseleave事件来防止额外的参数,但由于某种原因,jsbin并不认为它是一个函数。

+0

jQuery 1.2。6没有'mouseenter'和'mouseleave'的快捷函数,但你仍然可以像这样使用它们:'$('selector')。bind('mouseenter',function(){})''而不是使用悬停和空功能。 – 2010-03-05 16:34:42

+0

@bmac:很好,谢谢你的帮助,而不是有用的信息:) – Sarfraz 2010-03-05 16:50:47

0

你应该移动的div#panel_1,#panel_2,UL#菜单里 内部#panel_3,当你在DIV你还是在里,如果你申请悬停里,而不是一个。 其他方法是存储块的可见性并对其进行管理。

+0

http://jsbin.com/adofe/3/edit 使用悬停似乎工作 – 2010-03-05 14:17:54

+0

还是同样的问题:(你改变什么了 – Sarfraz 2010-03-05 14:22:17

+0

我检查代码的http:// jsbin。 com/adofe/8 /编辑使用每个和右悬停方法(2功能) – 2010-03-18 14:51:53

1

首先,为什么不把这两个放在CSS中作为“起点”?

$('div[id*="panel"]').hide(); 

    // make the panels absolute positioned 
    $('div[id*="panel"]').css('position', 'absolute'); 

其次,如果你只是将鼠标移到东西反反复复,你会得到一个:在line

堆栈溢出25个

网页错误的详细信息

用户代理:Mozilla的/ 4.0(兼容; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; MDDR; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0。0) 时间戳:星期五,2010 3月5日14时21分26秒UTC

消息: '的GUID' 为空或不是对象 行:25 字符:10976 代码:0 URI:http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js

消息: '未定义' 是空或不是对象 行:21 字符:560 代码:0 URI:http://jsbin.com/js/render/edit.js

消息: '未定义' 是空或不是对象 线:21 字符:560 代码:0 URI:http://jsbin.com/js/render/edit.js

消息: '未定义' 是空或不是对象 行:21 字符:560 代码:0 URI:http://jsbin.com/js/render/edit.js

第三,你有

var link_rel = null; 

然后在后面的代码分配相同名称的新变量:

var link_rel = $(this).attr('rel'); 

var pos = $(this).offset(); 

它获取每个悬停发生时间重新分配看到。

这与元素的嵌套(以及面板在链接上的位置)似乎导致了.hover事件管理的问题。

+0

@Mark:解决方案是什么?我解决了这一切,我只需要能够隐藏黑盒子,当鼠标离开它的区域。谢谢 – Sarfraz 2010-03-05 14:39:00

+0

我刚回到你提供的链接,存在同样的问题,你是怎样“修复所有这些”的? – 2010-03-05 14:57:36

+0

我在我的电脑上本地做过。 – Sarfraz 2010-03-05 16:48:30