Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 使用on()重新启用悬停_Javascript_Jquery - Fatal编程技术网

Javascript 使用on()重新启用悬停

Javascript 使用on()重新启用悬停,javascript,jquery,Javascript,Jquery,我有一个容器,它将根据单击的链接显示/隐藏 流程: 单击菜单按钮,它会显示容器2秒钟,并显示计时器,然后淡出 单击容器内的链接,防止容器褪色 再次单击菜单按钮,它允许容器再次褪色 奇怪的是,在最后一步之后,如果你悬停,鼠标会将容器移出,它不会褪色。我试过了。我有一种感觉,我没有在()上调用,对 我已经尝试在$('.menu控件')中使用它。在('click')上,允许再次删除鼠标,但我认为我需要定义它 $('#module-container').on('mouseleave'); 我还尝

我有一个容器,它将根据单击的链接显示/隐藏

流程:

  • 单击菜单按钮,它会显示容器2秒钟,并显示计时器,然后淡出
  • 单击容器内的链接,防止容器褪色
  • 再次单击菜单按钮,它允许容器再次褪色
奇怪的是,在最后一步之后,如果你悬停,鼠标会将容器移出,它不会褪色。我试过了。我有一种感觉,我没有在()上调用

我已经尝试在
$('.menu控件')中使用它。在('click')
上,允许再次删除鼠标,但我认为我需要定义它

$('#module-container').on('mouseleave');
我还尝试了其他一些方法,包括在函数中包装整个悬停,命名它,并在单击菜单按钮时调用它。没有成功

当视频作为背景播放时,“选项”将在单击菜单按钮后显示,并淡入淡出以避免妨碍。容器中的链接将实际停止视频,使其淡入淡出,并在页面上保留选项


不能像那样重新启用事件处理程序。使用
.off()
时,它会从元素中删除指定的事件处理程序。因此,如果要重新注册处理程序,需要将处理程序引用再次传递给
.on()
方法

由于您需要多次使用处理程序引用,因此更愿意将其作为独立函数编写,以便可以从多个位置引用它

你需要像这样写

$('.menu-control').on('click', function() {
    $('#module-container').fadeIn(300);
    window.mtimer = setTimeout(function(){ $('#module-container').fadeOut(300); }, time);
    //The following commented line doesn't work. I want to reallow the mousleave function, defined below (marked as HERE)
    $('#module-container').on('mouseleave', mouseenter);
});

function mouseenter(){
    clearTimeout(window.mtimer); 
}
function mouseleave(){
    window.mtimer = setTimeout(function(){ $('#module-container').fadeOut(300); }, time);
}

var time = 2000;
$('#module-container').on({
    mouseenter: mouseenter,
    //HERE
    mouseleave: mouseleave
});

$('.stopme').on('click', function(e) {
    $('#module-container').show().off('mouseleave');
    e.preventDefault();
});