Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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_Timer - Fatal编程技术网

Javascript 如何添加延迟计时器?

Javascript 如何添加延迟计时器?,javascript,jquery,timer,Javascript,Jquery,Timer,我有一段代码,可以使菜单项上下滑动。我想添加一个计时器,以便在向下滑动时有延迟,然后再向上滑动 $(function () { $("#menu").find("li").each(function () { if ($(this).find("ul").length > 0) { $(this).mouseenter(function () { $(this).find("ul").stop(true, tr

我有一段代码,可以使菜单项上下滑动。我想添加一个计时器,以便在向下滑动时有延迟,然后再向上滑动

$(function () {
    $("#menu").find("li").each(function () {
        if ($(this).find("ul").length > 0) {
            $(this).mouseenter(function () {
                $(this).find("ul").stop(true, true).slideDown();
            });
            $(this).mouseleave(function () {
                $(this).find("ul").stop(true, true).slideUp();
            });
        }
    });
});

看起来您正在使用jQuery编写javascript

jQuery有一个内置的
.delay
函数用于动画队列

在您的示例中,将slidedown动画延迟300毫秒

$(this).find("ul").stop(true, true).delay(300).slideDown();

请参见

它看起来像是在用jQuery编写javascript

jQuery有一个内置的
.delay
函数用于动画队列

在您的示例中,将slidedown动画延迟300毫秒

$(this).find("ul").stop(true, true).delay(300).slideDown();

参见

一种聪明的方法是在触发mouseleave之前,将悬停意图添加到等待:

  • 不要使用
    if($(this).find(“ul”).length>0){
    只需使用:
    (“li:has(ul)”)

    就可以仅在具有
    ul
    子元素的
    li
    上触发事件
  • mouseenter mouseleave
    添加事件回调
    e
  • 如果
    e
    事件==
    mouseenter
    else
    mouseleave
  • 然后清除名为“wait”的
    data
    属性并向下滑动子项
    ul
  • 现在,离开原始的
    li
    元素以到达“遥远的”
    ul
    我们必须跨越一个空白(演示),该空白通常会立即触发“slideUp()”,但我们在
    li
    的数据属性中设置了一个超时计数器,该属性将在运行前等待约180ms
  • 到达'distance'
    ul
    元素-通过超时'li'的子元素,我们清除超时(步骤1)'保留'鼠标指针状态

使用~180ms或您认为需要多少时间才能使用鼠标到达“远处”UL元素

聪明的方法是在触发mouseleave之前添加悬停意图以等待:

  • 不要使用
    if($(this).find(“ul”).length>0){
    只需使用:
    (“li:has(ul)”)

    就可以仅在具有
    ul
    子元素的
    li
    上触发事件
  • mouseenter mouseleave
    添加事件回调
    e
  • 如果
    e
    事件==
    mouseenter
    else
    mouseleave
  • 然后清除名为“wait”的
    data
    属性并向下滑动子项
    ul
  • 现在,离开原始的
    li
    元素以到达“遥远的”
    ul
    我们必须跨越一个空白(演示),该空白通常会立即触发“slideUp()”,但我们在
    li
    的数据属性中设置了一个超时计数器,该属性将在运行前等待约180ms
  • 到达'distance'
    ul
    元素-通过超时'li'的子元素,我们清除超时(步骤1)'保留'鼠标指针状态

使用~180ms或您认为需要多少时间才能用鼠标到达“遥远的”UL元素

这与Java有什么关系?这是什么编程语言?我认为您可以使用以下内容而不是
每个
来添加事件侦听器
$(“#菜单UL li UL:not(:empty)”).mouseenter(function(){…}.mouseleave(function()){…};
这与Java有什么关系?这是什么编程语言?我认为您可以使用以下内容来添加事件侦听器
$(“#menu ul li ul:not(:empty)”).mouseenter(function(){…}).mouseleave(function(){…})再次感谢。我会试试这个。@user1510450不客气!希望我猜对了你的需要。(欢迎来到SO;确保阅读和此:)再次感谢。我会试试这个。@user1510450不客气!希望我猜对了你的需要。(欢迎来到SO;确保阅读和此:)