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

Javascript 页面加载完成后,如何调用函数?(只有在那时……)

Javascript 页面加载完成后,如何调用函数?(只有在那时……),javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我在一些jquery代码方面遇到了问题。 在我的HTML页面中,我使用ajax获取一些信息,然后我正在更改一个HTML元素 带有$(“#id”).html(…) 问题是,我还有一个$(document).ready代码,我只想调用一次 页面加载完成后,但每次更改html后,使用$(“#id”).html(…) 再次调用该代码 如何运行$(文档).ready代码只运行一次 以下是一个例子: $(document).ready(function(){ // this code will ru

我在一些jquery代码方面遇到了问题。 在我的HTML页面中,我使用ajax获取一些信息,然后我正在更改一个HTML元素 带有
$(“#id”).html(…)

问题是,我还有一个
$(document).ready
代码,我只想调用一次 页面加载完成后,但每次更改html后,使用
$(“#id”).html(…)
再次调用该代码

如何运行
$(文档).ready
代码只运行一次

以下是一个例子:

$(document).ready(function(){
    // this code will run not only once...
}

function f(){
    $("#id").html(...);
}
根据以下评论:

看起来.ready()不仅在页面最初解决了 DOM,但显然也是在对DOM进行更改之后。这是一个问题,如果 您的就绪处理程序将更改DOM。这将导致ready()触发 不止一次。如果每次调用 为DOM添加了更多内容。Firefox和IE的行为与此不同, 包括不同的错误消息,并保留页面显示 不同的州。因此,如果ready()修改DOM,那么 明智的做法是找到一种方法来检查是否已经启动了ready

回答赛尔夫:看来问题的一部分并不是这样 ready函数再次启动(尽管这是可能的), 但是更改DOM会导致创建就绪的脚本 再次启动的功能,添加额外的就绪功能等。 如果javascript以一定的速度嵌入到html中,则似乎会发生这种情况 超出(或包含在)DOM中已准备就绪的部分的点 处理程序修改。(显然,最好是这样写 在文档头中创建就绪函数,但在本例中 不可选项。)通过检查全局标志变量 在执行jQuery(document).ready(…)之前未定义

如果这可能是您的问题,您可以采用相同的解决方案:

var onLoadFired = false;
$(document).ready(function() {

   /* Ensure this function only runs once */
   if (onLoadFired) {
      return;
   }
   else {
      onLoadFired = true;
   }

   /* Business logic */

   // .. your code here ..
});
或者,最好将处理程序移动到一个单独的脚本文件中,该文件包含在页面的
元素中的
脚本
标记中。

尝试:

var run = false;
$(document).ready(function() {
    if(!run) {
        ...
        run = true;
    }
});
……或者

$(window).load(function() {
    ...
});
第一个将确保它只运行一次;第二个选项在整个页面加载完成后运行(如果您需要在图像加载完成后调整大小,则此选项非常有用)。

尝试以下操作:

$(window).bind("load", function() {
   ...
});
定义“完成加载”。全部内容?大教堂?什么?你的第二个要求也一样吗?链接?不同的