这两者之间有什么区别?
$('#SPANID').html("Some Text");
jQuery('#SPANID').html("Some Text");
这是关于prototype和jQuery的对比吗?
它们都执行相同的功能。大多数库使用$作为一种更短的方式来访问库内的函数。
jQuery有许多访问其库的方式:
window.jQuery('#SPANID').html("Some Text");
window.$('#SPANID').html("Some Text");
jQuery('#SPANID').html("Some Text");
$('#SPANID').html("Some Text");
如果您使用多个库,可以使用jQuery或window.jQuery代替$。
JQuery有一个名为jQuery.noConflict();的函数,它放弃了jQuery对$变量的控制,使$无法与jQuery一起使用。
这对于使用使用$的多个库非常有用。
因此,当您使用jQuery时,您将执行jQuery('#message').addClassName('read');
,而在使用Prototype时,您将执行$('#message').addClassName('read');
。
(下面的内容有点离题,但如果您想要在多个库中使用$,这将有所帮助)
虽然有一种方法可以同时在不同的库上使用$,即使用匿名函数。如下:
(function($){
})(jQuery);
(function($){
})(Prototype);
(function($){
$(document).ready(function(){
$('#message').addClass('read');
});
})(jQuery);
(function($){
document.observe("dom:loaded", function() {
$('message').addClassName('read');
//Or
$$('#message').addClassName('read');
});
})(Prototype);
如果您使用多个JavaScript库,只使用$可能会导致冲突。使用jQuery可以避免这种情况。
这是同一件事的别名。如果您想在使用$
符号的其他库的同一页上使用jQuery,则可以使用带有.noConflict()选项的jQuery。这将允许您将$
用于其他库,而将jQuery
用于jQuery库。
实际上没有什么区别,除了 jQuery('SPANID')
实际上应该是 jQuery('#SPANID')
$ 只是 jQuery 的缩写
编辑:我理解 $ 和 jQuery 之间的真正区别在于可能与其他库发生命名空间冲突。除此之外,它们的工作方式相同。
$
是jQuery
的别名,它的行为完全相同...除了$
更容易发生命名空间冲突(与其他js库)。 - kingjeffrey使用显式的 "jquery" 可以避免冲突,如果您恰好还引用了另一个使用 "$" 的库。
更多细节请参见:http://api.jquery.com/ready/
$是jQuery的别名,而jQuery是一个JavaScript库。 插件是以特定方式使用该库,从而创建特定的库用途并扩展其功能。
以下是一些使用示例:
“常规”jQuery代码:
$(function(){
// my jquery code here
});
注意:这是一个事件管理器,也就是说,它在DOM准备就绪事件上执行。
插件代码:
(function($){
//theplugin code here
})( jQuery );
这样可以在函数中使用$,而不会产生混淆,因为它表示“将jQuery分配给传入函数的$”。
$(function(){
//stuff here such as jQuery code
});
就像
$(function(){
$("#mybutton").click(function() {
alert("hi");)
)};
});
等同于:
(function($) {
$(document).ready(function() {
$("#mybutton").click(function() {
alert("hi");
)};
})
})(jQuery)
但可能不如(没有结尾的绑定(jQuery)),只有在您使用其他使用$的库时才会发挥作用。
$ 只是一个字符,因此你可以有变量,例如:
myvariable = 0; $myvariable = 0; my$variable = 0;
这里没有什么特别之处,只是使用了另一个字符。
恰好 $ 的常见用途是 $ = jQuery; 其他库也使用此字符作为常见的速记符号(类似别名),因此出现了 noconflict 和使用全名(jQuery)。
区别在于:$
经常被其他库或 JavaScript 构造使用,因此它可能会被覆盖并且不能按照您的期望工作。 jQuery
总是指 jQuery 库,因此它将按照您的期望工作。
在无法保证 $
不会被其他内容覆盖的环境中,使用 jQuery
或 jQuery.noConflict( )
比使用 $
更安全。
当你已经定义了另一个库的$
时,请使用jQuery。当你没有(或在函数作用域内不必担心它时)使用$
作为方便的速记符号。
尽管个人认为jq
会成为一个不错的速记符号(与$
相同的按键数,可能稍微不太常见)。
这不仅仅是简写,而且还为其他可能使用$字符的JavaScript库而设计,为了避免混淆或冲突,最好使用jquery关键字。
$('message').addClassName('read');
(从 $ 函数中删除了哈希符号) - robjmills