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

最佳实践JavaScript:同一事件的多个事件监听器,还是一个监听器来管理所有事件?

最佳实践JavaScript:同一事件的多个事件监听器,还是一个监听器来管理所有事件?,javascript,jquery,javascript-events,document-ready,Javascript,Jquery,Javascript Events,Document Ready,在我的应用程序中,有许多模块彼此独立运行,其中大多数都会侦听$(document).ready()事件启动。例如,这些模块处理输入字段上的日期选择器、模式弹出窗口和按钮点击上的加载程序等 现在,在我的每个模块中,我都会收听$(document).ready()事件并启动模块,但我制作的模块越多,注册的事件侦听器就越多。我担心这会影响页面在加载时的响应性/流畅性,使其结巴/闪烁,总体感觉很慢 我想知道,如果我将所有的document ready函数添加到一个对象中,并听一次$(document).

在我的应用程序中,有许多模块彼此独立运行,其中大多数都会侦听
$(document).ready()
事件启动。例如,这些模块处理输入字段上的日期选择器、模式弹出窗口和按钮点击上的加载程序等

现在,在我的每个模块中,我都会收听
$(document).ready()
事件并启动模块,但我制作的模块越多,注册的事件侦听器就越多。我担心这会影响页面在加载时的响应性/流畅性,使其结巴/闪烁,总体感觉很慢

我想知道,如果我将所有的
document ready
函数添加到一个对象中,并听一次
$(document).ready()
循环对象并调用每个函数,会怎么样。顺序无关紧要


这会加快页面的“加载”速度吗?这会带来其他问题吗


您的想法是什么?

您进行优化是因为您看到了性能问题,或者您进行优化是因为您认为有一天会出现性能问题?“这会加快页面的“加载”速度吗?”“不会太大。”。您仍将运行所有相同的代码,只是使其不易维护。事件触发/处理代码与for循环一样简单,因此触发多个document.ready与单个document.ready相比,开销非常小。@MarkAdelsberger第二个选项,现在可以了,但最好在为时已晚之前进行优化,另外,如果有比我现在做的更好的方法,我希望know@Milanzorg如果我没有弄错的话,jQuery已经将处理程序存储在数组中,并循环它,而不是附加()。当然,
.ready()
是不同的,但它的工作原理也是一样的。它将函数存储在一个类似延迟数组的对象中,并在DOM就绪时解析它@freedomn-m——不要为别人的利益而害羞。这个问题是出于优化的愿望;我的第一个评论专门针对澄清情况是否如此。这不是对标准实践的搜索,而是关于是否打破它的问题。您进行优化是因为您看到了性能问题,或者您进行优化是因为您认为有一天会出现性能问题?“这会加快页面的‘加载’吗?”“不会很大程度上加快。您仍将运行所有相同的代码,只是使其不易维护。事件触发/处理代码与for循环一样简单,因此触发多个document.ready与单个document.ready相比,开销非常小。@MarkAdelsberger第二个选项,现在可以了,但最好在为时已晚之前进行优化,另外,如果有比我现在做的更好的方法,我希望know@Milanzorg如果我没有弄错的话,jQuery已经将处理程序存储在数组中,并循环它,而不是附加()。当然,
.ready()
是不同的,但它的工作原理也是一样的。它将函数存储在一个类似延迟数组的对象中,并在DOM就绪时解析它@freedomn-m——不要为别人的利益而害羞。这个问题是出于优化的愿望;我的第一个评论专门针对澄清情况是否如此。这不是一个标准实践的探索,而是一个是否要打破它的问题。