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
jquery:在生效之前添加延迟_Jquery_Css Float - Fatal编程技术网

jquery:在生效之前添加延迟

jquery:在生效之前添加延迟,jquery,css-float,Jquery,Css Float,我的网站上有浮动框。我在鼠标中心显示它,然后在鼠标离开时隐藏它。像这样: $(box).mouseenter(function(evt) {showBox();}); 及 当我在“框”上执行快速鼠标移动时,它会显示出来。 在那种情况下怎么不表现出来呢? 谢谢。用setTimeout()包装函数调用 其中1000是1秒。(1000毫秒=1秒) 编辑: 这可能比我想的要复杂一点。如果鼠标太快,你必须防止它出现 var t; $(box).mouseenter(function(evt) { t =

我的网站上有浮动框。我在鼠标中心显示它,然后在鼠标离开时隐藏它。像这样:

$(box).mouseenter(function(evt) {showBox();});

当我在“框”上执行快速鼠标移动时,它会显示出来。 在那种情况下怎么不表现出来呢?
谢谢。

用setTimeout()包装函数调用

其中1000是1秒。(1000毫秒=1秒)

编辑:

这可能比我想的要复杂一点。如果鼠标太快,你必须防止它出现

var t;
$(box).mouseenter(function(evt) { t = setTimeout("showBox()",1000);});
$(box).mouseleave(function(evt) { clearTimeout(t); });
$(what).parent().mouseleave(function(evt) {clearTimeout(t);hideBox();});
function showBox(){
    clearTimeout(t);
    // the rest or your function
}

用setTimeout()包装函数调用

其中1000是1秒。(1000毫秒=1秒)

编辑:

这可能比我想的要复杂一点。如果鼠标太快,你必须防止它出现

var t;
$(box).mouseenter(function(evt) { t = setTimeout("showBox()",1000);});
$(box).mouseleave(function(evt) { clearTimeout(t); });
$(what).parent().mouseleave(function(evt) {clearTimeout(t);hideBox();});
function showBox(){
    clearTimeout(t);
    // the rest or your function
}
var显示计时器;
$(框)。悬停(函数(){
//等待5秒以显示该框
showTimer=setTimeout(显示框,500);
},函数(){
//擦除计时器,以便在小于0.5秒时不调用showBox
如果(显示计时器){
clearTimeout(显示计时器);
showTimer=null;
}
营养不良();
}
var showTimer;
$(框)。悬停(函数(){
//等待5秒以显示该框
showTimer=setTimeout(显示框,500);
},函数(){
//擦除计时器,以便在小于0.5秒时不调用showBox
如果(显示计时器){
clearTimeout(显示计时器);
showTimer=null;
}
营养不良();
}
我发现该插件对于此类场景非常有用

写这样的东西很容易:

$(box).bindWithDelay("mouseenter", function() { ... }, 500);
这会在事件触发前增加500毫秒的延迟。它处理了事件多次触发时必须设置/取消/重置计时器的所有问题

(它还支持一个方便的节流选项,用于更复杂的情况,您可以在链接中阅读)

我发现该插件对于此类情况非常有用

写这样的东西很容易:

$(box).bindWithDelay("mouseenter", function() { ... }, 500);
这会在事件触发前增加500毫秒的延迟。它处理了事件多次触发时必须设置/取消/重置计时器的所有问题


(它还支持一个方便的节流选项,用于更复杂的情况,您可以在链接中阅读)

你能同时发布hideBox和showBox吗?或者发布一个JSFIDLE吗?你能同时发布hideBox和showBox吗?或者发布一个JSFIDLE吗?当你快速鼠标悬停时,它仍然会显示,只需1秒。这是你需要的。但是你还需要清除鼠标悬停中的超时。对吗?当你快速鼠标悬停时,它仍然显示,只需1秒nd稍后。这是您需要的。但是您还需要清除鼠标移动中的超时。对吗?您仍然需要取消该事件是的,这是真的,当然可以在
mouseleave
事件中完成。该插件所做的事情与其他答案中发布的代码几乎相同。我只是觉得拥有所有的plus很方便mbing隐藏起来。特别是如果你在一个页面上有几个这样的问题。你仍然需要取消这个事件是的,这是真的,当然可以在
mouseleave
事件中完成。插件做的事情与其他答案中发布的代码几乎相同。我只是觉得把所有管道隐藏起来很方便。特别是如果你在一页上有几个这样的话。
$(box).bindWithDelay("mouseenter", function() { ... }, 500);