$与jQuery


74

我们正在从MooTools切换到jQuery。我有一个同事告诉我,$在使用jQuery方法时(如果我对他的理解正确的话)请不要将其用作前缀。他说,取而代之的是使用更合适或更安全的方法(我没有真正跟随他)jQuery.

因此,例如$.plugin()jQuery.plugin()应使用代替。

为什么会这样呢?他与$/有什么区别jQuery?我应该忘记美元符号作为访问者吗?仅在某些情况下?



Answers:


87

为什么会这样呢?他的$ / jQuery区分正确吗?

因为几乎每个JavaScript库都定义了一个名为$的函数。当一个文档中有多个库时,可能会出现冲突。如果您确定jQuery并将始终是定义该函数的唯一脚本,那么我不会反对使用$。

jQuery定义了一个解决冲突的好方法:jQuery.noConflict。通过使用此函数,您可以定义自己的名称,从而可以访问jQuery,例如

var $jq = jQuery.noConflict(true);

调用此函数将导致在初始化jQuery之前为$和jQuery变量恢复先前的值。我不记得是否有其他库尝试解决名称冲突。

如果您想一直使用$而不是jQuery,则可以在一个单独的私有范围内运行代码,该范围通过使用自调用函数来保存$的定义。

(function($){
   // your code goes here
   $("body").append("<p>Hello World!</p>");
})(jQuery); // or even jQuery.noConflict()

10
只是为了弄清术语:您呈现的内容不是闭包,而是自我调用功能。闭包是当您在另一个函数内部定义一个函数并返回它时。
Andreas Grech

1
我的错。写答案时我不知道在想什么。更改了文字。
拉斐尔

2
IIFE(立即调用的函数表达式)为+1。IMO最好使用它,noConflict因为范围已明确定义。
2014年

1
您不认为在使用插件时在noConflict中传递“ true”可能会导致问题吗?我还没有尝试过,但是jQuery文档确实提到其他jQuery插件依赖'jQuery'变量,在这种情况下可能无法正常运行。
PrasadW

11

$是jquery的别名,从理论上讲,可以别名是另一个包含的库或脚本中的其他内容,这可能会导致混乱甚至更糟。如果仅使用jquery,则使用$应该可以。



5

除了围绕与其他库冲突的其他答案外,变量名称应始终描述变量。jQuery比变量更具有描述性$

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.