jQuery("...")
写而不是写是个好习惯$("...")
吗?
我听说如果他们也使用它,它可能有助于避免将来与其他库发生冲突$
,但这是现实世界的担忧吗?假设我真的不知道我将来会使用哪些其他库,所以我应该避免$("...")
在我的脚本中编写吗?是否还有其他知名的图书馆也依赖$
?
另外我很想知道这个主题是否还有其他问题。
jQuery("...")
写而不是写是个好习惯$("...")
吗?
我听说如果他们也使用它,它可能有助于避免将来与其他库发生冲突$
,但这是现实世界的担忧吗?假设我真的不知道我将来会使用哪些其他库,所以我应该避免$("...")
在我的脚本中编写吗?是否还有其他知名的图书馆也依赖$
?
另外我很想知道这个主题是否还有其他问题。
将 $ 用于 jQuery 是完全安全的,它是 jQuery 惯用语,至少在您自己控制的页面上是这样。
如果您确实选择在小部件中使用 jQuery,您可以以防止它发生冲突的方式构造它。
一般来说,jQuery 绑定到 $ 和 jQuery,所以单独使用 jQuery 并不能保证你的安全。
如果您担心冲突,jQuery 会公开 $.noConflit(); http://api.jquery.com/jQuery.noConflict/
这放弃了对 $ 的控制,您可以将 jQuery 存储在您选择的变量中(或使用 jQuery)。
以下是基于Wikipedia 页面和此stackoverflow 答案使用 $ 符号的库:
扫描这个页面,唯一想到的是:
- jQuery - 提供 jQuery.noConflict() 来释放 $
- 原型
- MooTools
然而 jQuery 正在以大约 90% 的市场份额扼杀它。
您可以使用销售调用函数包装您的代码并使用您想要的名称
(function (JQUERY, otherLIB) {
// ...
}(jQuery, $))
如果您使用该.ready()
函数(或快捷方式版本)来包装您的代码,那么已经有内置功能可以让您安全地访问 jQuery 库。那是通过在您提供的回调中定义一个函数参数。
jQuery(document).ready(function($) {
/* in here, $ is safe */
});
jQuery(function($) {
/* in here, $ is safe */
});
由于 jQuery 将自己作为第一个参数传递给回调,因此您可以给它任何您想要的名称,包括$
. 因为它形成了一个局部参数,所以它不会被全局空间中的相同名称所影响,也不会影响它。
这样就不需要.noConflict()
或手动的 IIFE 方法。您需要的一切都已经为您准备好了。
$ 现在经常使用,如果您不使用它,可能会被其他库事件使用。您可以使用jQuery.noConflict。
许多 JavaScript 库使用 $ 作为函数或变量名,就像 jQuery 一样。在 jQuery 的例子中,$ 只是 jQuery 的别名,所以所有功能都可以在不使用 $ 的情况下使用。如果您需要与 jQuery 一起使用另一个 JavaScript 库,请通过调用 $.noConflict() 将 $ 的控制权返回给另一个库。$ 的旧引用在 jQuery 初始化期间被保存;noConflict() 只是恢复它们,参考。
这$
只是一个简写命名空间,由于 jQuery 众所周知,许多 javascript 框架倾向于将其$
视为保留的命名空间并回避使用它。也就是说,任何人都很容易将任何代码命名为window.$
.
如果你知道$
命名空间到底指的是什么,你可以删除 jQuerys 对该命名空间的绑定,并在全局范围之外自己重新绑定它。
jQuery.noConflict();
(function($) {
// your code that can use $ as jQuery namespace
})(jQuery);
其他一些库也使用美元符号。例如,Mootools也可以使用它。但总有可能使用 jQuery 的noConflict模式,因此您可以非常安全地在代码中使用美元符号。