我遇到了一个小问题。 我有一个nevigation构建,当鼠标结束时打开,但也是 听取按键,而不是触发相同的动画,就像鼠标结束一样 另外打开子菜单。现在,当按键处于活动状态并且我正在使用时 鼠标悬停在该导航上,它会在我点击链接之前触发关闭操作。 我该如何阻止这种结束行动?
$(function () {
// keypress
$('html').live('keydown', function (e) {
if ( e.keyCode == 67 ){
$("#control").animate({width: '+=105', duration:400},
function(){
/*callback*/
$("#control").css({overflow:'visible'});
$("#control-menu li a").fadeTo('fast', 1);
$("#categories ul").css({marginLeft: '140px', display: 'block'}).fadeIn('slow');
$('#control').mouseenter(function() { $(this).stop(); });
}
)
}
});
// set easing method
jQuery.easing.def = 'easeInOutExpo';
// make menu work
$("#control-menu li a").css({opacity:'0.1'});
$("#control").hoverIntent(
function(){
$(this).stop().animate(
{width: '+=105',
duration:400}, function(){
/*callback*/
$("#control").css({overflow:'visible'});
$("#control-menu li a").fadeTo('fast', 1);
})
},
function(){
$("#control-menu li a").fadeTo('fast', 0.1);
$(this).stop().animate(
{width: '-=105',
duration:800}, function(){
/*callback*/
$("#control").css({overflow:'hidden'});
})
});
// END
});
提前感谢您的帮助!!!!
请问, 丹尼尔
答案 0 :(得分:0)
看起来它没有触发你的结束动作,而是立即停止动画打开它。
keydown
处理程序中的这一行:
$('#control').mouseenter(function() { $(this).stop(); });
向#control
添加事件处理程序,在当前事件处于document.ready
之后绑定,因此在之后执行。这意味着当你悬停时,它会启动动画,然后立即停止动画,因为当按下keydown
时,它会在mouseenter
上添加一个处理程序来执行此操作。
如果您只删除该行,它将停止此行为...但是查看您的代码我不清楚为什么它首先出现在那里。如果您可以描述它是为了解决而添加的,那么应该有更好的方法来做到这一点,而不会导致当前的问题。
答案 1 :(得分:0)
也许我应该打破代码升级并解释我想要做的事情。我知道肯定会有更好的方法,但我不得不说,我绝对是新手:)
好的,让我们分手吧:
//使菜单工作 基本上处理悬停时菜单出现的功能。那里的一切都像魅力一样工作
//按键 这就是问题所在。当按下键盘上的“C”时,导航与我用鼠标滑过导航和“类别”上的点相同。它还打开了该点的子菜单。现在,这一切都停留了。当我现在用鼠标进入该菜单并想点击一个menupoint时,我点开1.点,所以菜单表现得像它应该是,它关闭。 这是我插入该功能的方法:
$('#control')。mouseenter(function(){$(this).stop();});
直接作为一个函数,这样我就可以在那里输入鼠标,甚至不会触发关闭。
就像我上面所说的那样,有更好的方法可以做到这一切。例如,读出所有链接并基于html结构动态生成keydown等等...... 不幸的是,我是一个菜鸟,所以我不会在那时自己得到它