Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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/jquery/80.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_Html_Css - Fatal编程技术网

Javascript 在这种情况下使用间隔可以吗?

Javascript 在这种情况下使用间隔可以吗?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,所以我在写一个网站,我从头开始做一个下拉菜单。这包括一个选项卡,一旦指针悬停在该选项卡上,将显示一个下拉菜单,所有下拉菜单都包装在一个容器中。为了确保容器大小没有问题(这是必要的,因为它是可见的),我有两个选择。一种方法是调用函数三次更新容器的大小,一次在mouseenter()上,第二次在mouseleave()上,第三次在$(window.ready()上。不过,另一种方法是调用函数,每60秒调整一次容器的大小,无论条件如何。这两种方法似乎都有效,但我不确定哪一种更好/正确。这将是第一选择:

所以我在写一个网站,我从头开始做一个下拉菜单。这包括一个选项卡,一旦指针悬停在该选项卡上,将显示一个下拉菜单,所有下拉菜单都包装在一个容器中。为了确保容器大小没有问题(这是必要的,因为它是可见的),我有两个选择。一种方法是调用函数三次更新容器的大小,一次在mouseenter()上,第二次在mouseleave()上,第三次在$(window.ready()上。不过,另一种方法是调用函数,每60秒调整一次容器的大小,无论条件如何。这两种方法似乎都有效,但我不确定哪一种更好/正确。这将是第一选择:

$(document).on('mouseover', '.dropdown_container',
    function() {
        setContainerDimensions(this);
    }
)
.on('mouseleave', '.dropdown_container',
    function() {
        setContainerDimensions(this);
    }
);

$(document).ready(
    function() {
        setContainerDimensions('.dropdown_container');
    }
);
这将是第二种选择:

window.setInterval(function(){
    setContainerDimensions(".dropdown_container");
}, 16);
这是我的html:

<ul class="dropdown_container">
    <li class="tab super_tab"><a>Order</a></li>

    <ul class="dropdown">
        <li class="tab"><a>Cater</a></li>
    </ul>
</ul>
    订单
      迎合
正如您所看到的,第二种方法的代码效率要高得多,尽管我不确定它是否正确。你们觉得怎么样

另外,如果你能想出一个更好的选择,那就太好了


谢谢

除非您谈论的是大量代码,否则加载一些额外的代码可能不会产生明显的影响。它会降低初始页面加载的速度,并使用更多的浏览器内存,但在初始加载后对性能没有太大影响


相反,频繁运行不必要的代码(每秒60次)可能会降低页面的响应速度,因为这会在用户尝试使用浏览器时中断浏览器。不过,这项功能的实际影响将取决于该功能的价格。如果可以用响应用户驱动事件的代码替换设置间隔,则应避免设置间隔较小的
setInterval

除非您谈论的是大量代码,否则加载一些额外的代码可能不会产生明显的影响。它会降低初始页面加载的速度,并使用更多的浏览器内存,但在初始加载后对性能没有太大影响


相反,频繁运行不必要的代码(每秒60次)可能会降低页面的响应速度,因为这会在用户尝试使用浏览器时中断浏览器。不过,这项功能的实际影响将取决于该功能的价格。当可以用响应用户驱动事件的代码替换时,应避免使用小间隔的
setInterval

当然要使用更多的代码

使用间隔意味着很多次调整都是不必要的和浪费的。我建议避免如此频繁地执行代码,这可能会降低整个页面的速度


更多的代码是绝对可以的。现代浏览器实际上加载和执行速度非常快。

当然要使用更多的代码

使用间隔意味着很多次调整都是不必要的和浪费的。我建议避免如此频繁地执行代码,这可能会降低整个页面的速度


更多的代码是绝对可以的。现代浏览器实际上加载和执行速度非常快。

您的问题没有通用答案,因此您真的应该将您的问题更改为仅针对特定问题的特定问题,而不是假装为通用问题。我们所能做的就是评估一个特定的问题,并决定是否以某种方式更好地满足代码的需求。如果没有其他驱动因素,请选择最简单的选项,使代码最容易理解、维护最简单、出现错误的机会最小。您不能只执行类似于
$(document).on('mouseover mouseleave','.dropdown_container',function(){…})的操作吗?感谢@jfriend00的建议。我想我只是在征求人们的意见,但我意识到我不应该这么做。是的,关于编码风格的问题在这里是离题的。他们在codereview.stackexchange.com上可能更容易接受。您的问题没有通用答案,因此您确实应该将您的问题更改为仅针对特定问题的特定问题,而不是假装是通用问题。我们所能做的就是评估一个特定的问题,并决定是否以某种方式更好地满足代码的需求。如果没有其他驱动因素,请选择最简单的选项,使代码最容易理解、维护最简单、出现错误的机会最小。您不能只执行类似于
$(document).on('mouseover mouseleave','.dropdown_container',function(){…})的操作吗?感谢@jfriend00的建议。我想我只是在征求人们的意见,但我意识到我不应该这么做。是的,关于编码风格的问题在这里是离题的。他们在codereview.stackexchange.com上可能更容易接受。