Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用MouseOver和MouseOut_Javascript_Jquery_Html - Fatal编程技术网

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-添加了一把小提琴来显示它的工作,这就是你想要的吗?在