$()和$之间有什么区别?

时间:2013-08-16 15:00:04

标签: javascript jquery

我想弄清楚其他开发者使用$()$.之间的区别。

就我的理解而言,$()指的是DOM中的对象,但我并不100%明确$.的工作原理。我之前使用过$.格式,但从未理解它是如何工作的。

例如:

$.each(element, function() {});$.fn等......

在这个主题上阐明一些亮点和清晰度会很好。

5 个答案:

答案 0 :(得分:12)

$是一个标识符。它用作变量。它有一个分配给它的功能。

在函数之后放置()将调用它。 jQuery赋予它的函数会做很多不同的事情,具体取决于你传递给它的参数类型。 (这是可怕的超载)。 (例如,如果你传递一个函数,它将在文件就绪事件触发时调用该函数。如果你传递一个HTML字符串,它将创建该HTML的DOM表示并将其包装在jQuery对象中。如果你通过它是一个DOM节点,它将该节点包装在一个jQuery对象中。如果你传递一个CSS选择器,它将在文档中搜索匹配的DOM节点并用jQuery对象包装它们。)

在JavaScript中,函数是对象。对象可以具有属性。您可以通过$.name_of_property访问对象上的属性。这些属性也可以分配给它们的函数(或其他对象)。

答案 1 :(得分:5)

$()创建一个包含一些元素列表的jQuery实例对象。方法

$是唯一的jQuery对象,它有一些非特定于实例的方法。 (将它们视为“静态”方法,借用其他语言的术语可能会有所帮助)。

这个由$标识的唯一jQuery对象是一个函数(这就是它可以调用为$()的原因)。但是,JavaScript 中的函数是对象,因此它们本身可以具有属性和成员函数。

答案 2 :(得分:4)

基本上,$()是一个构造函数 - 你传递一个DOM选择器,它返回一个jQuery对象。

另一方面, $.each $().each $. $().是jQuery的原型函数。

编辑:

我支持@apsillers:$().each是原型函数,但$.(即$.each)直接在jQuery$上定义

来自jQuery的代码示例来备份我的声明:


jQuery.fn = jQuery.prototype = {
   .....
   .....
   .....
   // Execute a callback for every element in the matched set.
   // (You can seed the arguments with an array of args, but this is
   // only used internally.)
   each: function( callback, args ) {
      return jQuery.each( this, callback, args );
   },
   ....
   ....
};

如您所见,$().eachprototype函数。 jQuery.each是一种内部方法。直接在jQuery上定义。

取自jQuery Source Code

答案 3 :(得分:2)

$只是一个名称较短的变量,指向与jQuery相同的内容。 $()jQuery()相同(将jQuery称为函数),$.foojQuery.foo相同。 jQuery.foo访问foo对象的jQuery属性 - 函数对象也可以具有其他属性。

答案 4 :(得分:2)

$是jQuery对象,而$()是对该对象的评估(也是一个函数)。

$()的含义是(来自http://api.jquery.com/jQuery/):

  

返回基于DOM的匹配元素的集合   传递参数或通过传递HTML字符串

创建