我想弄清楚其他开发者使用$()
和$.
之间的区别。
就我的理解而言,$()
指的是DOM
中的对象,但我并不100%
明确$.
的工作原理。我之前使用过$.
格式,但从未理解它是如何工作的。
例如:
$.each(element, function() {});
或$.fn
等......
在这个主题上阐明一些亮点和清晰度会很好。
答案 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.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 );
},
....
....
};
如您所见,$().each
是prototype
函数。 jQuery.each
是一种内部方法。直接在jQuery
上定义。
答案 3 :(得分:2)
$
只是一个名称较短的变量,指向与jQuery
相同的内容。 $()
与jQuery()
相同(将jQuery
称为函数),$.foo
与jQuery.foo
相同。 jQuery.foo
访问foo
对象的jQuery
属性 - 函数对象也可以具有其他属性。
答案 4 :(得分:2)
$
是jQuery对象,而$()
是对该对象的评估(也是一个函数)。
$()
的含义是(来自http://api.jquery.com/jQuery/):
返回基于DOM的匹配元素的集合 传递参数或通过传递HTML字符串
创建