Javascript 使用MouseOver和MouseOut
大家好,我正在开发我的第一个网站,我正在尝试使用Javascript 使用MouseOver和MouseOut,javascript,jquery,html,Javascript,Jquery,Html,大家好,我正在开发我的第一个网站,我正在尝试使用jquery实现一个滑动菜单 这就是a到目前为止所得到的: <a href="javascript:void(0);"onmouseover="ShowBox();" onmouseout="HideBox();"">Show box<a> <script type="text/javascript"> function ShowBox()
jquery
实现一个滑动菜单
这就是a到目前为止所得到的:
<a href="javascript:void(0);"onmouseover="ShowBox();" onmouseout="HideBox();"">Show box<a>
<script type="text/javascript">
function ShowBox()
{
$("#SlideMenu").slideDown();
}
function HideBox()
{
$("#SlideMenu").slideUp();
}
</script>
如果您使用jQuery,这将是正确的方法:
<a href="#" id="showBoxHref">Show box</a>
<script type="text/javascript">
$("#showBoxHref").hover(function() {
$(this).slideDown();
}, function() {
$(this).slideUp();
});
</script>
$(“#showBoxHref”).hover(函数(){
$(this.slideDown();
},函数(){
$(this.slideUp();
});
(只需将其复制/粘贴到中,它就会工作)如果使用jQuery,这将是正确的方法:
<a href="#" id="showBoxHref">Show box</a>
<script type="text/javascript">
$("#showBoxHref").hover(function() {
$(this).slideDown();
}, function() {
$(this).slideUp();
});
</script>
$(“#showBoxHref”).hover(函数(){
$(this.slideDown();
},函数(){
$(this.slideUp();
});
(只需将其复制/粘贴到中,它就会工作)当您使用jQuery时,我相信使用类似于以下内容的工具会对您有所帮助:
$("#box").hover(
function() {
//.stop() to prevent propagation
$(this).stop().animate({"bottom": "200px"}, "fast");
},
function() {
$(this).stop().animate({"bottom": "0px"}, "fast");
}
);
这意味着,当鼠标位于菜单上方时,菜单将保持在打开位置。当鼠标退出菜单时,它将关闭。显然,更改id和动画CSS值以满足您的需要:)
下面是一个工作示例:
在您使用jQuery时,我相信使用类似以下内容会对您有益:
$("#box").hover(
function() {
//.stop() to prevent propagation
$(this).stop().animate({"bottom": "200px"}, "fast");
},
function() {
$(this).stop().animate({"bottom": "0px"}, "fast");
}
);
这意味着,当鼠标位于菜单上方时,菜单将保持在打开位置。当鼠标退出菜单时,它将关闭。显然,更改id和动画CSS值以满足您的需要:)
下面是一个工作示例:
在没有内联JS的情况下完成你的工作,记住关闭在没有内联JS的情况下完成你的工作,记住关闭这里真的没有问题-脚本完全按照你告诉它的做。然而,据我所知,如果用户的鼠标现在在菜单上,那么当您离开“trigger”元素时,您希望菜单保持打开状态。试试这个:
<script type="text/javascript">
var timeout=250;//timeout in milliseconds to wait before hiding the menu
var menuMouseout;
$(document).ready(function() {
$("#trigger").hover(function(){
$("#SlideMenu").slideDown();
}, function(){
menuMouseout=setTimeout("$('#SlideMenu').slideUp();", timeout);
});
$("#SlideMenu").hover(function(){
clearTimeout(menuMouseout);
}, function(){
menuMouseout=setTimeout("$('#SlideMenu').slideUp();", timeout);
});
});
</script>
var超时=250//隐藏菜单前等待的超时(毫秒)
var menuMouseout;
$(文档).ready(函数(){
$(“#触发器”).hover(函数(){
$(“#SlideMenu”).slideDown();
},函数(){
menuMouseout=setTimeout(“$('#SlideMenu')。slideUp();”,timeout);
});
$(“#SlideMenu”).悬停(函数(){
clearTimeout(menuMouseout);
},函数(){
menuMouseout=setTimeout(“$('#SlideMenu')。slideUp();”,timeout);
});
});
这样,用户在鼠标移出触发器元素以进入菜单后会有一段时间。您可能需要修改超时,但这应该可以工作。我测试了这个,它似乎起作用了。如有必要,请确保将其包装在$(document).ready
中,以确保所有元素都已加载并准备就绪
演示:这里真的没有问题-脚本完全按照您的要求执行。然而,据我所知,如果用户的鼠标现在在菜单上,那么当您离开“trigger”元素时,您希望菜单保持打开状态。试试这个:
<script type="text/javascript">
var timeout=250;//timeout in milliseconds to wait before hiding the menu
var menuMouseout;
$(document).ready(function() {
$("#trigger").hover(function(){
$("#SlideMenu").slideDown();
}, function(){
menuMouseout=setTimeout("$('#SlideMenu').slideUp();", timeout);
});
$("#SlideMenu").hover(function(){
clearTimeout(menuMouseout);
}, function(){
menuMouseout=setTimeout("$('#SlideMenu').slideUp();", timeout);
});
});
</script>
var超时=250//隐藏菜单前等待的超时(毫秒)
var menuMouseout;
$(文档).ready(函数(){
$(“#触发器”).hover(函数(){
$(“#SlideMenu”).slideDown();
},函数(){
menuMouseout=setTimeout(“$('#SlideMenu')。slideUp();”,timeout);
});
$(“#SlideMenu”).悬停(函数(){
clearTimeout(menuMouseout);
},函数(){
menuMouseout=setTimeout(“$('#SlideMenu')。slideUp();”,timeout);
});
});
这样,用户在鼠标移出触发器元素以进入菜单后会有一段时间。您可能需要修改超时,但这应该可以工作。我测试了这个,它似乎起作用了。如有必要,请确保将其包装在$(document).ready
中,以确保所有元素都已加载并准备就绪
演示:当您离开鼠标或悬停元素时,它会做什么?它是否给出错误?不,它只是表现为鼠标离开控件,尽管我根本没有使用鼠标。当您离开鼠标或悬停元素时,它会做什么?它是否给出了一个错误?不,它只是表现得好像鼠标离开了控件,尽管我根本没有使用鼠标为什么要使用动画,而您可以使用slideDown()
和slideUp()
?此外,您没有提到您需要为
元素指定一个框的ID,以使上述操作正常工作。@ElliotBonneville使用animate使更改非常容易,他可以让菜单向上、向左、向下、向右、淡入、淡出等滑动。。但你是对的,这样就不需要按钮来切换菜单了。我要提到这一点,谢谢:)既然可以使用slideDown()
和slideUp()
,为什么还要使用动画呢?此外,您没有提到您需要为
元素指定一个框的ID,以使上述操作正常工作。@ElliotBonneville使用animate使更改非常容易,他可以让菜单向上、向左、向下、向右、淡入、淡出等滑动。。但你是对的,这样就不需要按钮来切换菜单了。我要提一下,谢谢:)这不管用。现在我一点也不滑倒了。我需要在标签上添加一个事件吗?不,你需要看到我的答案,然后先关闭元素。哎呀,两个输入错误,正在修复@阿迪内奥:谢谢你的接球。现在可以了,但问题还是一样。菜单一放下,它就会向上滑动。不管我把老鼠放在哪里。即使我根本不移动它:(这不起作用。现在我根本不需要滑动。我需要在标记中添加一个事件吗?不,你需要看到我的答案,然后首先关闭元素。哎呀,两个输入错误,正在修复。@adeneo:谢谢你的提示。它现在起作用了,但问题仍然是一样的。菜单一放下,它就会向上滑动。无论我把鼠标放在哪里。即使我不移动鼠标我已经改变了我的代码,但是我再也没有任何效果了。只是一个展示框label@PhaDaPhunk-添加了一把小提琴来显示它的工作,这就是你想要的吗?在