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