这是jQuery准备好的文档:
$(document).ready(function(){});
现在,美元符号是jQuery的简写,它调用jQuery库,所以我们可以生成jQuery语句和调用,对吗?
(document)是一个选择器,指的是DOM的“最高”部分(除了Window?)。
.ready是DOM完全加载时发生的操作。现在,“DOM”被完全加载,在这种情况下DOM是否指的是被选中的内容?因此,如果选择了body而不是document,脚本会在加载之前执行吗?
(function(){});
这部分让我有点困惑。
我知道一旦我们的文档加载了,它就会运行我们的脚本。换句话说,它会运行我们的功能吗?我们的整个脚本是否被视为一种功能?而且,它只是一个很大的JavaScript声明,对吗?因为它以分号结尾。另外,为什么我们的脚本通常介于大括号之间,而不是函数的括号?有什么区别?
非常感谢,抱歉n00by的问题,我只是好奇!的xD
答案 0 :(得分:15)
现在,美元符号是jQuery的简写,它调用jQuery库,所以我们可以生成jQuery语句和调用,对吗?
是的,$
和jQuery
指的是同一个对象。取自jQuery的来源:
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
window
是全局对象。添加到其中的任何内容都可在全球范围内使用,因此您可以将其称为window.$
,或仅称为$
。
(document)是一个选择器,指的是DOM的“最高”部分(除了Window?)。
document
不是选择器,而是DOM object引用DOM中的最顶层节点。它还有其他属性,例如document.domain
等。其中一个子元素是<html>
元素。
.ready是DOM完全加载时发生的操作。现在,“DOM”被完全加载,在这种情况下DOM是否指的是被选中的内容?
是的,DOM指的是我们通常在jQuery选择器中选择的项目。更具体地说,它是页面的内存中表示。 ready
为不同的浏览器使用一堆事件来确定DOM何时加载。
因此,如果选择了body而不是document,脚本会在加载之前执行吗?
目前,当您调用ready
时,jQuery的源代码并不关心传入的选择器。这是准备好的功能:
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// If the DOM is already ready
if ( jQuery.isReady ) {
// Execute the function immediately
fn.call( document, jQuery );
// Otherwise, remember the function for later
} else if ( readyList ) {
// Add the function to the wait list
readyList.push( fn );
}
return this;
},
因为它不关心传递什么选择器,所以你也可以传递它body
,什么都没有,或任何你想要的东西。
$({
an: 'object',
that: 'has',
nothing: 'to',
'do': 'with',
ready: 'event'
}).ready(function() { .. });
它仍然可以使用。
(function(){});
这部分让我有点困惑。
我知道一旦我们的文档加载了,它就会运行我们的脚本。换句话说,它会运行我们的功能吗?
是的,这个以及与ready事件绑定的每个函数都将在DOM准备就绪时执行。
我们的整个剧本是否被视为一种功能?
不,不是整个脚本。只有依赖于DOM的项目。有些东西需要在找到时进行处理。想想jQuery库本身。在处理之前,它不会等待任何DOM就绪事件。如果您编写JavaScript语句,它将按照找到的顺序进行处理,除非它是一个回传函数,就像您传递给ready(..)
的函数一样。因此,无论是否加载DOM,下面的代码都会立即执行并发出警告“hello”。
<script>
function hello() { alert("hello"); }
hello();
</script>
而且,它只是一个很大的JavaScript声明,对吗?
不是真的。您可以根据需要巧妙地模块化JavaScript。例如,你可以拥有类似于类,对象,可重用小部件,MVC等架构模式的东西。
因为它以分号结尾。
分号与执行某些事情无关。我写得很好。
<script>
alert("Hello"), alert("World")
</script>
将按顺序工作并提醒两个单词,并且没有分号。
另外,为什么我们的脚本通常介于大括号之间,而不是函数的括号?有什么区别?
这是在JavaScript和其他几种语言中定义函数的方式。提高你的基本技能,以便更好地理解。不要将它称为脚本,因为它只会使问题混淆。它只是一个函数,里面有一些语句。
答案 1 :(得分:4)
.ready()
功能仅在选择文档时触发。我不相信你可以致电$(body).ready()
基本上,ready()函数接受1个参数 - 一个函数。你可以轻松打电话
$(document).ready(alert)
但我们通常做的是使用function(){}
你是正确的,因为典型$(document).ready(function(){})
中的所有代码只是一个很大的功能。
我们的脚本介于大括号之间,因为这是你定义函数的方式。
而不是这样做:
function myFunc()
{
alert('We are in my function');
}
$(document).ready(myFunc)
我们切断了中间人,然后这样做:
$(document).ready(function()
{
alert('We are in my function');
});
答案 2 :(得分:1)
(document)
不是选择器。它是对“文档”对象的引用。.ready
是对jQuery对象上可用函数的引用。它是.bind("ready", f)
(function() { ... })
是该事件的处理程序。将函数绑定为“就绪”处理程序在概念上与绑定“单击”处理程序没什么不同。
答案 3 :(得分:1)
现在,美元符号是简写 jQuery,调用jQuery 库,所以我们可以制作jQuery 语句和调用,正确的?语句和调用,对吗?
是
.ready是一个在什么时候发生的动作 DOM已满载。现在 “DOM”完全加载,是DOM 在这种情况下,指的是什么 选择?所以,如果,身体被选中 而不是文件,脚本 在加载之前执行?在加载之前执行?
没有。只有文档才能触发就绪事件。
这是dom准备就绪时将执行的功能
$(document).ready(function(){alert('ready')})
你好colos alos写道:
$(document).ready(mxFunction)
function mxFunction(){alert('ready')}
答案 4 :(得分:1)
我不同意@eskimoblood “只有文档可以触发就绪事件。”这不是真的,没有文档就绪事件,jQuery和其他库引入了'ready',表明DOM已经准备就绪,不一定要加载。
当所有图像框架和其他资源都已加载时,会触发window.loaded,因此'ready'将在'loaded'之前触发。看看'DOMContentLoaded',它将为您提供有关'ready'类型事件如何实现的更多详细信息。
答案 5 :(得分:0)
我并没有真正了解JavaScript和jQuery,但语句在{}
中,参数在()
中。所以()
传递给函数{}
的是什么函数
答案 6 :(得分:0)
在jQuery中,你可以在事件发生后为任何jQuery事件添加一个函数。
在这种情况下,when the (document) is ready(), run the function(){} within it
。
在某些情况下,您可以向函数添加参数。例如,当使用jQuery.ajax
时,我可以在成功设置中使用参数,以访问从ajax请求返回的数据,并在函数本身中重用该参数。
$.ajax({
url: "test.html",
cache: false,
success: function(html){
$("#results").append(html);
}
});