Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 从不同上下文调用JQuery函数_Javascript_Jquery - Fatal编程技术网

Javascript 从不同上下文调用JQuery函数

Javascript 从不同上下文调用JQuery函数,javascript,jquery,Javascript,Jquery,这可能是一个非常基本的问题,但我试图理解这种行为 这是我的javascript代码。我想知道为什么第二次呼叫foo不起作用。这是你的电话号码 DOM未完全加载。。这就是它不起作用的原因 因此,当您将代码封装在DOM-Ready处理程序中时,它会等待加载文档,然后在其中运行代码 这将确保元素在运行任何代码之前可用 当解析HTML文档时,它会自上而下地进行解析 因此,如果脚本包含在head部分中,则首先加载脚本,然后加载HTML结构。。当您尝试运行代码时,它显然不会工作,因为元素仍然没有被解析 因此

这可能是一个非常基本的问题,但我试图理解这种行为

这是我的javascript代码。我想知道为什么第二次呼叫foo不起作用。这是你的电话号码


DOM未完全加载。。这就是它不起作用的原因

因此,当您将代码封装在
DOM-Ready
处理程序中时,它会等待加载文档,然后在其中运行代码

这将确保元素在运行任何代码之前可用

当解析
HTML文档时,它会自上而下地进行解析

因此,如果脚本包含在head部分中,则首先加载脚本,然后加载HTML结构。。当您尝试运行代码时,它显然不会工作,因为元素仍然没有被解析

因此,将其封装在处理程序中将确保在对其调用方法之前元素可用。

这是因为
$(“#容器”).foo(“外部”)在处理
正文
之前进行计算
$(“#容器”)
将返回长度为0的值。这一点如下所示

$.fn.foo = function(somestring){
  var $this = this;
  $this.html(somestring);
}

$(function(){
    $('#container').foo("within function");
});

var element = $('#container');
console.log(element.length); //prints 0
element.foo("outside");

如果脚本位于页面的开头,则HTML文档的其余部分尚未解析,因此该文档在脚本看来是空的,因此还没有容器

$(function() { ... });
大致相当于

Wait till the whole HTML file is loaded and ready
Then execute function

所以#容器将在那里,它将工作。另一种方法是将脚本放在页面其余部分的下面,或者至少放在容器的下面。

对不起,您能详细说明一下吗
Wait till the whole HTML file is loaded and ready
Then execute function