Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 如果光标停止移动,则通过超时强制触发器悬停在列表中的每个元素上_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如果光标停止移动,则通过超时强制触发器悬停在列表中的每个元素上

Javascript 如果光标停止移动,则通过超时强制触发器悬停在列表中的每个元素上,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个简单的菜单导航列表,比如ul>li*5>a和li上的简单悬停效果。 我想让onload页面,若用户不移动光标n秒,脚本开始强制每n秒在每个li上悬停一次,并在周围重复。它的最佳实现是什么 假设我正确理解了你的问题,这是一种方法 (函数(){ 让自行车开始; 让mouseLastMoved=0; //添加处理程序以检测鼠标移动 $(窗口).on('mousemove',()=>{ 窗口清除超时(cycleStarted); cycleStarted=false; $('.hover').

我有一个简单的菜单导航列表,比如ul>li*5>a和li上的简单悬停效果。
我想让onload页面,若用户不移动光标n秒,脚本开始强制每n秒在每个li上悬停一次,并在周围重复。它的最佳实现是什么

假设我正确理解了你的问题,这是一种方法

(函数(){
让自行车开始;
让mouseLastMoved=0;
//添加处理程序以检测鼠标移动
$(窗口).on('mousemove',()=>{
窗口清除超时(cycleStarted);
cycleStarted=false;
$('.hover').get().forEach((li)=>{
//清除当前悬停的项目
//很明显,removeClass也是borked
//因此,这样做。
li.classList.remove('hover');
});
mouseLastMoved=(新日期()).getTime();
});
常量cycleMenuItemHover=()=>{
常量项=$('.menu li').get();
//手动执行此操作,因为jQuery.index显然已损坏且不可信
const hovered=items.filter((li)=>{//获取悬停的元素
返回li.classList.contains('hover')
});
const current=items.indexOf(悬停[0]);//在所有项的列表中获取其索引
如果(悬停。长度){
//其中一个悬停在它的上方
悬停[0]。类列表。删除('hover');
}
let next=0;//默认为无当前悬停,或最后一个悬停项
如果(当前>-1和当前<(items.length-1)){
next=current+1;//将其设置为下一个
}
//悬停下一个
items[next].classList.add('hover');
//在1s内再次执行此操作
cycleStarted=window.setTimeout(cycleMenuItemHover,1000);
}
让checkMovement=window.setInterval(()=>{
const now=(新日期()).getTime();
如果(!cycleStarted&&now>(鼠标移动+5000)){
cycleStarted=window.setTimeout(cycleMenuItemHover,1000);
}
}, 5000);
})(jQuery)
body{font-family:sans-serif;}
.menu、.menu li{
边界半径:0.75em;
边框:1px纯绿色;
}
.menu>ul{margin:0;padding:0;}
李先生{
边框:1px纯黑;
列表样式类型:无;
保证金:0;
填充:1em;
}
.hover{背景色:#BBB;}

  • 菜单项1
  • 菜单项2
  • 菜单项3
  • 菜单项4
  • 菜单项5

添加您的代码。你试过什么吗?还有,你的母语是什么?也许用你的母语交流会更有效率。。。