Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
jQuery在鼠标不在元素onload上时隐藏_Jquery - Fatal编程技术网

jQuery在鼠标不在元素onload上时隐藏

jQuery在鼠标不在元素onload上时隐藏,jquery,Jquery,如果我有一个菜单,出于可访问性的原因,它在页面加载时是可见的(因此,如果欧盟没有启用JS,那么他们仍然可以四处导航),但是如果他们确实启用了JS,我想隐藏它,那么就很容易了,只需隐藏它。但是,如果在事件触发时鼠标位于元素上方,我希望它保持打开状态 问题是(无论如何,对于FF,我认为这也适用于其他浏览器),如果鼠标不移动,鼠标不会触发任何事件来确定它当前在菜单上,如果这样做有意义的话 $(function(){ $("#myMenu").animate({"width": 'toggle'},

如果我有一个菜单,出于可访问性的原因,它在页面加载时是可见的(因此,如果欧盟没有启用JS,那么他们仍然可以四处导航),但是如果他们确实启用了JS,我想隐藏它,那么就很容易了,只需隐藏它。但是,如果在事件触发时鼠标位于元素上方,我希望它保持打开状态

问题是(无论如何,对于FF,我认为这也适用于其他浏览器),如果鼠标不移动,鼠标不会触发任何事件来确定它当前在菜单上,如果这样做有意义的话

$(function(){
  $("#myMenu").animate({"width": 'toggle'}, 350).hide();
});
我也尝试将其直接放入窗口加载事件中,但是这不起作用,因为事件参数对象显示
window
为当前目标,而不是鼠标当前所在的元素,而且这也不好,因为窗口加载等待图像等的所有问题

$(window).load(function(e){
  console.log(e);
  $("#myMenu").animate({"width": 'toggle'}, 350).hide();
});

为什么不无限期地显示它,直到鼠标移动,然后检查鼠标是否在上面,如果没有,则隐藏

将mousemove事件附加到窗口,然后检查它是否位于该DOM元素之上:

  $(window).mousemove(function(event) {
    var mouse_x = event.pageX;
    var mouse_y = event.pageY;

    // then get position and height/width of menu's DOM element, hiding if the mouse isn't in it
  });

这是个不错的主意,不过我会把它转换成
$(window)。一个(“mousemove”,function…
,而不是像那样的纯绑定,否则它会一直启动,这不是最好的,特别是当我以后不需要它的时候。(或者可以在function中解除绑定事件,无论哪种方式)