JQuery语法解释

时间:2015-12-08 02:12:38

标签: javascript java jquery

作为一名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
}

2 个答案:

答案 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()