jQuery是有良好的封装,全局只有一个jQuery对象,不污染顶级域名。
jQuery默认使用"$"做为操作符,prototype等其他框架也是,于是,如果jQuery在其他库之后引入,那么jQuery会占用"$"。这样的情况也很容易理解,毕竟JS是从上到下流式执行的。
同样的道理,如果在其他使用"$"的库之前引入jQuery,那么jQuery的"$"将被其他库占用。
在第一种情况时,如果想使jQuery让出"$",只需要使用下面的语句:
jQuery.noConfilct();
该函数会返回jQuery对象本身,于是可以用来取别名,例如
var j = jQuery.noConfilt();
其实,如果单纯地想取别名,使用var j = jQuery;就可以,但是上面的用法是更好的,后面会说到原因。
jQuery.noConfict()做了什么?怎么能够让出使用权?其实很简单,提前把$的原本对象保存起来,调用该方法的时候再恢复就可以。
下面是源码,相信一定能够看明白了:
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
jQuery.extend({
noConflict: function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}
if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}
return jQuery;
}
可以看出,这里的noConflict如果指定deep为true,是可以把jQuery的全局对象也让出来,这种用法可以用于多个jQuery版本的替换。
其实,这种noConflict用法是很常见的,在backbone中也这样的函数,见代码
// Save the previous value of the `Backbone` variable, so that it can be
// restored later on, if `noConflict` is used.
var previousBackbone = root.Backbone
// Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
// to its previous owner. Returns a reference to this Backbone object.
Backbone.noConflict = function() {
root.Backbone = previousBackbone;
return this;
};
分享到:
相关推荐
**三、jQuery.noConflict源码分析** 在jQuery源码中,`jQuery`和`$`都被映射到私有变量,`noConflict()`通过判断这些变量的状态来决定如何恢复之前的状态。如果`deep`参数为`true`,则会连`jQuery`本身也恢复为原始...
- **`jQuery.noConflict()` 的作用**:当调用 `jQuery.noConflict()` 时,jQuery 会释放对 `$` 的控制权,并将自身返回,使得可以直接通过 `jQuery` 来调用 jQuery 的方法,或者通过传入的变量名(如上面例子中的 `$...
- 第一步加载了1.x版本的jQuery(确切版本未知),并使用`$.noConflict(true)`创建了一个新的变量`jQuery_New`。 - 第二步加载了1.6.2版本的jQuery,并使用`$.noConflict(true)`创建了一个新的变量`jQuery_1_6_2`。 ...
首先加载了jQuery库(版本为1.3.2),然后通过`jQuery.noConflict()`方法将jQuery的`$`符号替换为一个新的变量名(这里为`$j`)。接着,加载了DWR相关的JavaScript文件(包括接口定义、引擎和工具库)。在DWR部分,...
1. **使用`jQuery.noConflict()`**:这是jQuery提供的一种机制,用于释放`$`变量的控制权,从而避免与其它库(如DWR)的冲突。通过调用`jQuery.noConflict()`,我们可以将`$`的使用权交还给DWR,同时为jQuery分配一...
在引入jQuery库之后,立即调用`noConflict()`,然后在需要使用jQuery的地方,使用`jQuery`代替`$`。 ```javascript var j = $.noConflict(); j(document).ready(function(){ // 在这里使用j代替$ }); ``` 2....
jQuery.noConflict() 运行这个函数将变量$的控制权让渡给第一个实现它的那个库。 这有助于确保jQuery不会与其他库的$对象发生冲突。 在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("div ...
- 将jQuery的加载方式改为No Conflict模式,即在引入jQuery时使用`<script src="path/jquery.js"></script>`并在文档底部添加`<script>window.jQuery = jQuery.noConflict();</script>`。这样可以在全局作用域下...
`jQuery.noConflict()`方法的作用是释放对`$`和`jQuery`的控制权,以便其他库也可以安全地使用这两个关键字。当一个项目中使用了多个JavaScript库时,这种方法是非常有用的。 #### 四、结语 这份源码注释不仅为...
jQuery提供的noconflict函数很好的解决了变量冲突问题,无论是$或者jQuery冲突都可以解决,接下来我们就来分析一下jQuery的冲突处理。 先来看一下jQuery源码中noconflict的实现: (function(window,undefined){ var ...
`jQuery.noConflict()`的作用就是释放jQuery对$的控制权,将其改为使用jQuery对象来调用jQuery的方法。 2. **`$(document).ready(function() { ... })`**:这是一个常用的jQuery函数,表示当DOM文档完全加载并可...
此外,通过上述提到的$().noConflict(),jQuery允许开发者在存在其他JavaScript库的情况下,能够安全地使用jQuery。这通常用于处理$变量的冲突问题,$()是一个常用于快速访问jQuery对象的简写,但在其他库中,$可能...
通过对文档内容的分析,我们可以清晰地了解到 jQuery 是如何简化 Web 开发过程的。从基本概念到实际应用,再到高级技巧,jQuery 都展现出了其强大的功能和灵活性。对于初学者来说,掌握这些基础知识是进入 jQuery ...
本文实例分析了jQuery prototype冲突的2种解决方法。分享给大家供大家参考,具体如下: jquery和prototype怎么会冲突,归根到底就是因为他们二个都用到了$,同时用,混淆了。这个问题解决过不下5次,每次解决都要查...
jQuery noConflict() 方法是jQuery库提供的一种解决与其他JavaScript框架冲突的机制。在开发网页时,如果需要同时使用jQuery和其他使用$符号作为简写的JavaScript库,可能会导致命名冲突,使得脚本无法正常工作。...
在本篇文章中,我们将深入探讨jQuery的无冲突模式,并分析如何使用该模式来解决和其他JavaScript库的冲突问题。 首先,我们需要了解冲突产生的根本原因。通常,冲突是由于不同库或框架中对于相同标识符的使用发生了...
为了解决上述问题,jQuery提供了一个名为`noConflict()`的方法,该方法可以将jQuery对`$`的绑定释放出来,从而避免与其它库发生冲突。 1. **基本用法**: ```javascript <script src="prototype.js"> ...