Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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设置超时多次_Jquery_Settimeout - Fatal编程技术网

Jquery设置超时多次

Jquery设置超时多次,jquery,settimeout,Jquery,Settimeout,我的问题是。。。当我在链接上多次快速移动鼠标时,框就不会隐藏。看起来setTimeout被覆盖了,旧函数停止工作了——在最后的弹出窗口中,_remove()并没有发生。请帮助我,我是jQ的初学者,已经用这个隐藏和展示盒浪费了将近两天的时间。当我不使用settimeout,只使用display:none for mouseenter和mouseleave时,一切都很好。我想我只是不理解setTimeout方法 我的JS: timeout_on = {}; timeout_off = {}; $(

我的问题是。。。当我在链接上多次快速移动鼠标时,框就不会隐藏。看起来setTimeout被覆盖了,旧函数停止工作了——在最后的弹出窗口中,_remove()并没有发生。请帮助我,我是jQ的初学者,已经用这个隐藏和展示盒浪费了将近两天的时间。当我不使用settimeout,只使用display:none for mouseenter和mouseleave时,一切都很好。我想我只是不理解setTimeout方法

我的JS:

timeout_on = {};
timeout_off = {};

$('.flex_section').delegate('a','mouseenter mouseleave',function(e){
   var a = $(this).attr('id')
   if (e.type == 'mouseenter'){

     timeout_on['id_'+ a] = setTimeout(function() { popup_show(a); }, 300);

   } else {

     timeout_off['id_'+ a] = setTimeout(function() { popup_remove(a); }, 300)

   }
});

popup_show(type){
     $('#someID_' + type).css('display','block')
     clearTimeout(timeout_on['id_'+ type])
}
popup_remove(type){
     $('#someID_' + type).css('display','none')
     clearTimeout(timeout_off['id_'+ type])
}

也许你必须在设置另一个之前清除超时

鼠标输入: -添加输入的超时 鼠标左键: -删除旧超时 -为离开添加超时