Javascript 如何建立一个;设置超时“;对于jQuery函数是否正确?
我希望能得到一些帮助。我对Jquery和JavaScript还不熟悉,我被一个“setTimeout”函数卡住了。 我正在处理我的导航栏,基本上我需要一个div(子菜单)在“单击”锚定标记时淡入,如果将鼠标移动到其他导航链接时淡出,如果鼠标离开,则将其全部隐藏:如是:Javascript 如何建立一个;设置超时“;对于jQuery函数是否正确?,javascript,jquery,Javascript,Jquery,我希望能得到一些帮助。我对Jquery和JavaScript还不熟悉,我被一个“setTimeout”函数卡住了。 我正在处理我的导航栏,基本上我需要一个div(子菜单)在“单击”锚定标记时淡入,如果将鼠标移动到其他导航链接时淡出,如果鼠标离开,则将其全部隐藏:如是: 单击时显示,但几秒钟后隐藏 在鼠标离开div后隐藏if 到目前为止,我得到的是: $("a").click(function() { $("#sub_nav").fadeIn(400); }); $("#sub_nav"
$("a").click(function() {
$("#sub_nav").fadeIn(400);
});
$("#sub_nav").mouseleave(function() {
$(this).fadeOut(0);
});
$("#sub_nav").mouseenter(function() {
if(this) {
$(this).show(0);
} else {
setTimeout(function() {
$(this).fadeOut(0);
}, 2000);
};
});
除设置超时
外,它按预期工作
感谢所有能给我的帮助
$("#sub_nav").mouseenter(function() {
if ( !$(this).is(':animated') ) {
var el = this;
setTimeout(function() {
$(el).fadeOut(0);
}, 2000);
}
});
函数范围内的“this”是“window”对象,您需要保存对元素的引用
我删除了你的if(this),因为它的计算结果总是为true,我不确定你是否正在调试,但如果它不是正确的解决方案,你可能可以用它作为例子。我认为如果(this)是假的话,我不认为它是假的。谢谢Meder,我不希望这么快得到答案。我试过你的建议,但似乎没有达到我的要求。我也没有试着调试它。我会尽量解释得更好。如果单击链接,则子菜单将淡入,如果鼠标进入子菜单,则子菜单将保持显示状态,否则,子菜单将在几秒钟后淡出。或者鼠标进入子菜单并在离开时淡出。这就是为什么我尝试了“如果”的说法。有什么想法吗?谢谢-描述有点混乱,但是我在我的代码周围添加了一个if,所以如果它没有被设置动画(来自fadeIn),它就会消失。我甚至不确定我的逻辑在这一点上是否正确,你有一个可以在jsbin.com上抛出的例子吗?对不起,我有时很难用语言来表达。如果需要,您可以在此处查看:,如果单击“发布”,子菜单将显示。即使我不得不想些别的事情,我也很感谢你的帮助。对不起,我不知道你所说的jsbin.com是什么意思。我真丢脸!这是可行的,虽然我有点太困了,但您可能可以使用
:动画的选择器,引用元素.is
,可能还有.data
,我在示例中使用了该选择器(后一个除外)。