jquery语句的理解

$('.cul>li').each(function(){$(this).hover(function(){$(this).css("background-color",... $('.cul > li').each(function(){
$(this).hover(
function(){
$(this).css("background-color","yellow");
$(this).find('ul:eq(0)').show();
},
function(){
$(this).find('ul:eq(0)').hide();
}
);
});
这是一个鼠标经过显示,移开隐藏的代码,但是有一个鼠标移快了就不能隐藏的BUG
该怎样解决呢?hover事件下有两个并列的函数是怎样执行的?怎么理解呢?
$(this).hover(
function(){}
function(){}

意思就是当鼠标经过当前区块就会执行下面两个函数吗?
如果是这样的话,那上面那段代码意思不就是先执行显示然后再执行隐藏吗?
但实际效果却是移动到当前区块显示,移开后又隐藏,为什么会这样呢?
展开
 我来答
帐号已注销
2012-05-18 · TA获得超过4630个赞
知道大有可为答主
回答量:1345
采纳率:50%
帮助的人:1636万
展开全部
hover事件在CSS中的就是当鼠标悬停在结点上时,给结点的样式,当鼠标移开后,样式还会还原回去。这个在超链接结点上用的比较多,目前IE7以下版本只支持超链接中href属性不为空的结点应用此伪类。

jquery就是模拟的这样一个过程,当鼠标移动到结点上时,触发hover的第一个参数函数;鼠标从这个结点上移开时,触发第二个函数。

举例来说,假定获取页面中某个结点为node,则node.hover(fn1,fn2)实质上就是给node绑定了两个事件,node.onmouseover = fn1、node.onmouseout = fn2。

jquery中hover函数的源码:
hover: function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
显然,当你仅仅给hover一个参数时,鼠标经过和鼠标移开都会执行这个参数函数,也就是这个函数会执行两次。

____________________________________

第一个函数是在鼠标移动到该区域时触发,第二个函数则在鼠标移开该区域触发。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式