Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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/ssis/2.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_Css - Fatal编程技术网

jquery正在删除未正常工作的事件侦听器

jquery正在删除未正常工作的事件侦听器,jquery,css,Jquery,Css,我有一个外部div,内部有一个内部div(实际上是其父级的1/4)。最初,内部div位于左上角。我要做的是,当外部div得到一个mouseenter事件时,内部div将移动到左下角,而当外部div得到一个mouseleave事件时,内部div将等待1秒,然后移回其原始位置。通常我的代码是有效的。但有一种特殊的情况,例如我将鼠标悬停在外层div上,然后在不到一秒钟的时间内,我将鼠标悬停在外层div上,然后再将鼠标悬停在其上。对于这种情况,我使用mouseenter事件开头的off()方法取消mou

我有一个外部div,内部有一个内部div(实际上是其父级的1/4)。最初,内部div位于左上角。我要做的是,当外部div得到一个
mouseenter
事件时,内部div将移动到左下角,而当外部div得到一个
mouseleave
事件时,内部div将等待1秒,然后移回其原始位置。通常我的代码是有效的。但有一种特殊的情况,例如我将鼠标悬停在外层div上,然后在不到一秒钟的时间内,我将鼠标悬停在外层div上,然后再将鼠标悬停在其上。对于这种情况,我使用
mouseenter
事件开头的
off()
方法取消
mouseleave
事件。但它不起作用

var-inner=document.getElementById(“inner”);
var outer=document.getElementById(“outer”);
$(外部).on('mouseenter',()=>{
$(此).off('mouseleave');
$(内部).css(“transform”,“translateY(0)”);
});
$(外部).on('mouseleave',()=>{
$(this).delay(1000).queue((next)=>{
$(内部).css(“transform”、“translateY(100%)”);
next();
});
});

在您调用
关闭()
时,事件已被触发,正在延迟。相反,您需要使用
dequeue()
方法删除排队的动画

var-inner=document.getElementById(“inner”);
var outer=document.getElementById(“outer”);
$(外部).on('mouseenter',()=>{
$(this.dequeue();
$(内部).css(“transform”,“translateY(0)”);
});
$(外部).on('mouseleave',()=>{
$(this).delay(1000).queue((next)=>{
$(内部).css(“transform”、“translateY(100%)”);
next();
});
});

如果您将鼠标悬停在蓝色方块上,黄色方块将移到左上角,当您用鼠标退出蓝色方块时,黄色方块将移回左下角。在问题提供的示例中,快速将鼠标移到蓝色方框的边界之外,然后再次移回,将导致黄色方框返回到左下角,而当鼠标位于蓝色方框内时,黄色方框不应返回到左下角。