JQuery语法解释

JQuery Syntax Explaination

本文关键字:解释 语法 JQuery      更新时间:2023-09-26

作为一名Java程序员,我最近一直在研究JavaScript,以便创建一个网站。我知道JavaScript中有以下方法:

function a(){
  //Do something
}

然而,我不太确定以下内容的作用:

 $(document).ajaxStop(function() {
  $(this).unbind("ajaxStop"); //prevent running again when other calls finish
  initialize();
});

我猜$(document)正在访问某种变量,但从哪里访问呢?有人能告诉我$(文件)到底是什么吗?在java中,典型的语法是Object.MethodName();这有点类似,但我不确定"$(文档)"是什么

在另一个例子中:

$( document ).ready()

它看起来是一个被方法调用的对象,但是,我不确定这些对象来自哪里。有人能解释一下这是怎么回事吗?我只熟悉面向对象的编程,这种带有$的引用/方法很令人困惑。如果我能帮忙澄清什么,请告诉我。

TL;博士

为什么周围有括号和美元符号:

$( document ).ready()

而不是

function a(){
  //Do something
}

$是jQuery附加库定义的一个函数,用于创建jQuery对象。它只是一个普通的Javascript函数,但它并没有内置在Javascript中——只有在首先加载jQuery库并且该库为该符号分配特定函数时,它才会出现。它实际上是一个名为jQuery的函数的别名/快捷方式。因此,$(document)jQuery(document)相同。

document是由浏览器定义的全局变量,因此在浏览器Javascript中全局可用。

虽然$看起来像是特殊的语言语法,但它只是Javascript中的一个普通符号,可以定义为任何其他符号都可以定义的任何符号。在jQuery库的情况下,它被定义为创建jQuery对象的函数。

$(document)调用$函数并传递一个参数(document对象),该函数调用创建一个包含一个DOM节点(document元素)的jQuery对象。jQuery对象是一个包含实例数据和一组方法的Javascript对象。jQuery对象的实例数据主要是DOM元素的列表。对象的方法通常对其包含的DOM元素列表执行操作。

$(document).ajaxStop(...)创建上面的jQuery对象,然后对该对象调用ajaxStop()方法。您可以在这里阅读该方法的jQuery文档。该方法的简短摘要是:注册一个处理程序,以便在所有Ajax请求完成后调用

你可以这样想:

var obj = $(document);
obj.ajaxStop(...);

但是,如果底层jQuery对象只需要一次,那么它可以在一行中完成,比如:

$(document).ajaxStop(...);

$( document ).ready(...)对类似创建的jQuery对象调用.ready()方法。该方法的文档在这里。该方法的简短摘要是:指定在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函数的另一种方式。

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();
});

这里,对document对象调用ajaxStop()函数,并将匿名函数作为参数传递。在这个匿名函数中,有两个函数要执行:$(this).unbind("ajaxStop")initialize()