作为一名Java程序员,我最近一直在寻找JavaScript来创建一个网站。我知道JavaScript中有以下方法:
function a(){
//Do something
}
但是,我不太确定以下内容:
$(document).ajaxStop(function() {
$(this).unbind("ajaxStop"); //prevent running again when other calls finish
initialize();
});
我猜测$(文档)正在访问某种变量,但是从哪里来?有人可以告诉我究竟$(文件)是什么?在java中,典型的语法是Object.MethodName();这有点类似,但我不确定“$(文件)”是什么。
在另一个例子中:
$( document ).ready()
它似乎是一个方法调用的对象,但是,我不确定这些对象来自何处。有人可以解释这是怎么做的以及做了什么?我只熟悉面向对象的编程,这种类型的引用/方法与$混淆。如果我能帮忙澄清一下,请告诉我。
TL; DR
为什么会出现括号和美元符号:
$( document ).ready()
而不是
function a(){
//Do something
}
答案 0 :(得分:2)
$
是jQuery附加库定义的创建jQuery对象的函数。它只是一个普通的Javascript函数,但它不是内置于Javascript中 - 它仅在首先加载jQuery库并且该库为该符号分配特定函数时才存在。它实际上是名为jQuery
的函数的别名/快捷方式。因此,$(document)
与jQuery(document)
相同。
document
是由浏览器定义的全局变量,因此在浏览器Javascript中全局可用。
虽然它可能看起来像特殊的语言语法,$
只是Javascript中的普通符号,可以定义为任何其他符号都可以定义为的任何符号。在jQuery库的情况下,它被定义为一个创建jQuery对象的函数。
$(document)
调用$
函数并传递一个参数(document
对象),该函数调用创建一个包含一个DOM节点的jQuery对象(document
元件)。 jQuery对象是一个Javascript对象,它包含实例数据和一堆方法。 jQuery对象的实例数据主要是DOM元素的列表。对象的方法通常在它包含的DOM元素列表上执行操作。
$(document).ajaxStop(...)
创建上面的jQuery对象,然后在该对象上调用ajaxStop()
方法。您可以阅读该方法的{jQuery文档here。该方法的简短摘要是:注册所有Ajax请求完成后要调用的处理程序。
你可以这样想:
var obj = $(document);
obj.ajaxStop(...);
但是,如果底层jQuery对象只需要一次,那么它可以在一行中完成,如:
$(document).ajaxStop(...);
$( document ).ready(...)
在类似创建的jQuery对象上调用.ready()
方法。该方法的文档是here。该方法的简短摘要是:指定在DOM完全加载时要执行的函数。
为什么有括号和美元符号
$
符号只是一个Javascript函数。在jQuery库中,有类似的东西将$
定义为函数:
function jQuery(arg) {
// code to process the arg and return a jQuery object
return aJqueryObject;
}
// create an alias/shortcut for the jQuery function
var $ = jQuery;
因此,$()
只调用$
函数,这只是调用jQuery
函数的另一种方式。
答案 1 :(得分:0)
jQuery是一个Javascript函数库,在您当前的页面上存在对包含所有jQuery函数的导入jQuery对象的引用。此jQuery对象通常被引用为$
(美元符号)。要使用任何与jQuery相关的函数,您需要使用此符号或单词jQuery
。
使用$(document)
表示您想要使用当前文档(您所在的整个页面,DOM)并可能使用它。 $(document).ready()
调用意味着您希望在文档(DOM)完全加载后立即执行某些操作。此函数将在您的Javascript文件中使用:
$(document).ready(function() {
// Do something
});
您可以在Javascript中看到,您可以将函数作为参数传递给函数。 ready()
是一个在document
对象上调用的函数,它的参数是一个匿名函数(一个没有名称的函数,只能使用一次,因为它没有名称),其中你编写了你想要执行的代码。
这与您提到的第一个代码块类似:
$(document).ajaxStop(function() {
$(this).unbind("ajaxStop"); //prevent running again when other calls finish
initialize();
});
这里,在ajaxStop()
对象上调用document
函数,并将匿名函数作为参数传递。在这个匿名函数中,有两个函数要执行:$(this).unbind("ajaxStop")
和initialize()
。