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

Javascript 如何在文档末尾调用函数。就绪

Javascript 如何在文档末尾调用函数。就绪,javascript,jquery,Javascript,Jquery,我在一个页面上有多个document.ready函数,我希望在执行所有document.ready函数后调用一个函数。我只是想调用这个函数 最后,在执行所有其他document.ready函数之后。 例如,每个document.ready函数在执行时递增一个全局变量,最后一个函数需要在最后检查该变量的值 有什么想法吗?第一个想法(对于小型应用程序):整理一下 您可以将所有内容放入一个$().ready()调用中。这可能会妨碍重构,但在大多数情况下,这是正确的做法 第二个想法:调解人[模式] 创建

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

有什么想法吗?

第一个想法(对于小型应用程序):整理一下

您可以将所有内容放入一个$().ready()调用中。这可能会妨碍重构,但在大多数情况下,这是正确的做法

第二个想法:调解人[模式]

创建一个中介类,该类将注册函数并调用其register(),而不是$().ready()。注册所有函数后,只需在集合上循环,并在单个且仅有的$().ready()中运行它们,代码中就有一个点,该点就在所有函数执行之后


我目前正在为jquery应用程序开发一种具有中介的框架。如果您感兴趣,我可能会将一个小版本(包括mediator)粘贴在一起。

为什么不在所有其他版本之后再调用它呢

$(function(){
  func1();
  ...
  funcN();
  functionThatNeedsToBeCalledAfter();
});
当然,您必须清理代码,以便只有一个地方使用document ready函数。。。但是,这样您的代码就更具可读性,因此它是值得的。

这就足够了:

$(function () {
    window.setTimeout(function () {
        // your stuff here
    }, 0);
});

这会在执行文档就绪队列中的所有其他函数后推迟函数的执行。

有点小技巧,但可能会起作用,在jquery范围内创建一个这样的变量

$.imDone = false $.imDone=false 然后创建一个函数,在短时间后调用setTimeout以查找变量ser到true

var theLastFunctionToCall = function(){ alert('I m the last being called!') } var trigger = function(){ $.imDone?theLastFunctionToCall():window.setTimeout(trigger,10); } trigger(); var theLastFunctionToCall=函数(){ 警报(“我是最后一个被呼叫的人!”) } var触发器=函数(){ $.imDone?LastFunctionToCall():window.setTimeout(触发器,10); } 触发器();
我只在你有不同的$(文档)时才推荐这个。准备在不同的大js文件中,但如果你能重构,我真诚地推荐一个最佳解决方案。

比我的想法更干净,我喜欢+1。好把戏,我不知道。我认为JS引擎会优化设置超时时间(f,0)away。这种行为是在某个地方指定的,还是你自己偶然发现的?@janmoesen:0并不是一个真正的零,正如你在这里看到的:代码保证以单独的执行方式运行,这正是我们所需要的,因为所有onDomReady函数都在循环中的一次运行中执行(第373行:)。Thankoyu Marko,但是你能给我解释一下延迟0的概念吗,@Umair: