jquery 如何在document.ready的最后调用函数

42fyovps  于 2024-01-07  发布在  jQuery
关注(0)|答案(5)|浏览(158)

我在一个页面上有多个document.ready函数,我希望在所有document.ready函数执行完后调用一个函数。我只是希望在所有其他document.ready函数执行完后,在最后调用该函数。例如,每个document.ready函数在执行时递增一个全局变量,最后一个函数需要在最后检查该变量的值。
有什么想法吗?

azpvetkf

azpvetkf1#

这就足够了:

  1. $(function () {
  2. window.setTimeout(function () {
  3. // your stuff here
  4. }, 0);
  5. });

字符串
这将在 document ready 队列中的所有其他函数执行之后推迟函数的执行。

hmtdttj4

hmtdttj42#

第一个想法(对于小应用程序):整理
你可以把所有的东西都放在一个$().ready()调用中。这可能需要重构,但在大多数情况下这是正确的做法。
第二个想法:一个调解人[模式]
创建一个中介器类,它将注册函数并调用其register()而不是$().ready()。当所有函数都注册后,您只需在集合上循环并在单个且唯一的$().ready()中运行它们,并且您在代码中有一个点,该点正好在所有执行之后。
我目前正在开发一种jquery应用程序的框架,它有一个中介器。如果你感兴趣的话,我可能会把一个小版本的中介器放在一起。

yshpjwxd

yshpjwxd3#

为什么不叫它在所有其他人之后?

  1. $(function(){
  2. func1();
  3. ...
  4. funcN();
  5. functionThatNeedsToBeCalledAfter();
  6. });

字符串
当然,你将不得不清理你的代码,只有一个地方使用文档准备功能......但这样你的代码将更具可读性,所以这是值得的。

anhgbhbe

anhgbhbe4#

有点小黑客,但可能会工作,在jquery范围内创建一个变量,如

  1. $.imDone = false

字符串
然后创建一个函数,在短时间内调用setError来查找变量ser为true

  1. var theLastFunctionToCall = function(){
  2. alert('I m the last being called!')
  3. }
  4. var trigger = function(){
  5. $.imDone?theLastFunctionToCall():window.setTimeout(trigger,10);
  6. }
  7. trigger();


我只建议当你在不同的大js文件中有不同的$(document).ready时,但如果你可以重构,我真诚地推荐一个最佳解决方案。

展开查看全部
bd1hkmkf

bd1hkmkf5#

我在这样编码的时候调用了这个函数,我想在页面的末尾清除cookie。我需要在页面中显示一些cookie。显示之后,它会清除cookie。该函数在header部分定义。

  1. <script>
  2. ClearCookies();
  3. </script>
  4. </body>
  5. </html>

字符串

相关问题