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