有人可以努力向我解释jquery中$
和$()
之间的区别吗?
我知道$()
是$jQuery()
的简写形式,它接受任何DOM元素并将其转换为jQuery对象。
但我不确定的是$
是什么,与$()
的不同之处。请赐教。
谢谢堆, Chaitanya
答案 0 :(得分:18)
$
是函数,可以调用 - $()
。
$()
的行为会根据提供的参数而有很大差异,但下面的所有示例都将返回 jQuery
个对象。它可以:
document.ready
处理程序 - $(myfunc)
$('#myid')
$('<div>')
$()
$
也是一个对象,它包含各种实用程序函数$.each
等,作为该对象的属性。在这种情况下,它就像这些函数的名称空间一样。
答案 1 :(得分:5)
$ = jQuery
- 这是jQuery对象,用于它包含的jQuery Utilies,例如$.Ajax()
或$.each()
因此var j = $;
会将jquery原型分配给变量j
。
$()= jQuery()
- 这是一个从根jQuery对象调用的函数,用于将DOM元素转换为jQuery对象或使用选择器获取jQuery对象
答案 2 :(得分:3)
希望这会有所帮助并添加到其他帖子:)
$
=是一个有效的javascript对象/标识符。
$()
=调用$()会创建一个空的jQuery对象。
jQuery() - 也可以写成$() - 在DOM中搜索与提供的选择器匹配的任何元素,并创建一个引用这些元素的新jQuery对象:
正式文件 Please read docs here (click me)我强烈建议您阅读本文档。
您的问题是两个问题的混合,请参阅下文:
答案 3 :(得分:2)
如果我创建一个函数:
function my_function(){ 警报( '创建my_function'); 返回(33) }
my_function
是包含函数的变量。
my_function()
是函数调用的结果。
您可以使用函数调用my_function()
来执行函数中的指令和/或将返回的结果转换为变量var my_var = my_function();
。
您可以使用函数的变量名称将其作为参数传递给另一个函数,例如$('a').click(my_function);
因为JavaScript中的变量可以是包含标量(文字值),数组,对象和函数的任何类型。
现在接受这个想法并以此为基础:
$
只是一个变量名,就像jQuery
只是一个变量名一样。
正如所发生的那样,此变量包含一个函数,这意味着$()
或jQuery()
执行函数体$
中存在的指令。< / p>
答案 4 :(得分:0)
$
是对jQuery名称空间的引用,通过它可以访问其静态方法(例如ajax
,each
等),而$()
调用一个函数要么注册一个DOM-ready回调(如果函数传递给它),要么返回DOM中的元素(如果选择器字符串或元素传递给它)。
顺便提一下,$
是jQuery
的缩写,而不是$jQuery
。
答案 5 :(得分:0)
在Javascript中,一切都是数据,这包括功能。作为一个人为的例子:
function test() {
console.log("test");
}
对于此示例,test()
是函数的调用。简单地使用test
就像使用一个变量,它允许你做类似的事情:
var t = test;
t();
然后导致t
具有与test
相同的数据/功能。
这允许你做一些像闭包的事情:
function closure() {
var i = 0;
function inner() {
i++;
console.log(i);
}
return inner;
}
由于函数只是一些数据,我们可以返回它然后调用它。所以你会写下这样的东西:
var t = closure();
t(); // prints '1'
t(); // prints '2'
除了其他好处之外,这样做可以让您的命名空间不那么混乱。
要直接回答您的问题,$
只是jQuery
的别名,它是通过以下方式完成的:
function jQuery() { /* Lots of code */ }
$ = jQuery;