Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 setInterval/clearInterval下拉列表问题_Javascript_Jquery_Settimeout - Fatal编程技术网

Javascript setInterval/clearInterval下拉列表问题

Javascript setInterval/clearInterval下拉列表问题,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我想使用jquery创建一个下拉菜单,但它会关闭,即使它不应该关闭 我有一个元素订阅了mouseenter事件,鼠标进入该元素,下拉菜单启动,一切似乎都正常。我转到项目列表,它是包含一些内容的列表元素。我第一次更改这两个元素时,一切都按预期进行。所以我把mouseout事件调用的元素留下,在1000毫秒内,列表不再可见。 第二次打开“下拉列表”时,它似乎还可以,但如果我查看列表,它会在我离开元素时消失。从某种意义上讲,这是合乎逻辑的,因为两个元素(按钮和列表)中的每一个都订阅了两个事件:mous

我想使用jquery创建一个下拉菜单,但它会关闭,即使它不应该关闭

我有一个元素订阅了mouseenter事件,鼠标进入该元素,下拉菜单启动,一切似乎都正常。我转到项目列表,它是包含一些内容的列表元素。我第一次更改这两个元素时,一切都按预期进行。所以我把mouseout事件调用的元素留下,在1000毫秒内,列表不再可见。 第二次打开“下拉列表”时,它似乎还可以,但如果我查看列表,它会在我离开元素时消失。从某种意义上讲,这是合乎逻辑的,因为两个元素(按钮和列表)中的每一个都订阅了两个事件:mouseenter和mouseleave。Mouseenter提供clearInterval,mouseout提供setInterval。数据存储在名为tTimer的变量中,该变量的默认值为0。 我真的不知道为什么会这样。下面是我代码中的一个小片段:

        var tTimer = 0;
        var rmItemList = function(){itemList.remove(); clearTimeout(tTimer); }

        $(this).bind("mouseleave",function(){ tTimer = window.setTimeout(rmItemList, 1000); });
        itemList.bind("mouseleave",function(){ tTimer = window.setTimeout(rmItemList, 1000); });
        $(this).bind("mouseenter",function(){ window.clearTimeout(tTimer); itemList.appendTo("body"); });
        itemList.bind("mouseenter",function(){ window.clearTimeout(tTimer); });

我发现想象你在做什么有点棘手。但是,我看到您在重复地从DOM中添加和删除元素。我相信
.remove()
会从元素中删除事件处理程序。最好使用
.show()
.hide()


这将具有更高性能的额外优势。

您已经很好地详细描述了该场景,但是您仍然可以在该场景上进行一个最低限度的演示吗?