jRaiser与jQuery的冲突问题
最近有网友在留言板里问到jRaiser和jQuery的冲突问题,特此写一篇文章进行解释。
冲突的根源
众所周知,jQuery是通过一个全局变量$来引用的,而jRaiser加载时也占用了$。因而冲突的根源就是全局变量$。说得明白点:当jQuery和jRaiser共存的时候,$究竟是谁?
分析jQuery和jRaiser的源代码可以知道,这两个库在加载的时候都会占用$变量。因此,按照覆盖的原理,谁后加载,$变量就是谁。
如何解决冲突
别名法
除了$,jQuery和jRaiser都占用了另外一个变量作为别名,这个别名就是库本身的名称。
jQuery("div"); // 使用jQuery
jRaiser("div"); // 使用jRaiser
使用别名的主要问题是输入不方便:“$”只有一个字符,而“jQuery”有六个字符。但这个问题可以通过闭包解决:
(function($) {
// 此函数内的$是jQuery
$("div");
})(jQuery);
(function($) {
// 此函数内的$是jRaiser
$("div");
})(jRaiser);
使用多库共存机制
jQuery提供了jQuery.noConflict()这样一个方法,可以把$变量恢复为jQuery加载前的值。
<script type="text/javascript" src="jRaiser-1.3.3.js"></script>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript">//<![CDATA[
jQuery.noConflict();
alert($ === jRaiser); // true
//]]></script>
jRaiser也提供了类似的方法。jRaiser.retire()可以把$变量恢复为jRaiser加载前的值;而jRaiser.resume()则恢复jRaiser对$变量的占用。
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="jRaiser-1.3.3.js"></script>
<script type="text/javascript">//<![CDATA[
jRaiser.retire();
alert($ === jQuery); // true
jRaiser.resume();
alert($ === jRaiser); // true
//]]></script>
建议继续学习:
- JQuery实现Excel表格呈现 (阅读:46675)
- 分享一个JQUERY颜色选择插件 (阅读:12821)
- jQuery插件---轻量级的弹出窗口wBox. (阅读:9753)
- 10个强大的Ajax jQuery文件上传程序 (阅读:7816)
- jQuery的data()方法 (阅读:7696)
- jQuery性能优化指南 (阅读:7460)
- jQuery Color Animations颜色动画插件 (阅读:7226)
- 精于图片处理的10款jQuery插件 (阅读:6371)
- jQuery中getJSON跨域原理详解 (阅读:5694)
- 配合jquery实现异步加载页面元素 (阅读:5454)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Heero's Blog 来源: Heero's Blog
- 标签: jQuery jRaiser 冲突
- 发布时间:2010-07-18 08:42:45
-
[76] memory prefetch浅析
-
[51] find命令的一点注意事项
-
[38] 基本排序算法的PHP实现
-
[33] 卡诺模型―设计品质与设计价值的思考
-
[32] Oracle bbed工具的编译
-
[26] 8大实用又重要Mac使用技巧
-
[26] 程序员技术练级攻略
-
[25] 两行 JavaScript 代码
-
[24] 读书笔记-壹百度:百度十年千倍的29条法则
-
[22] 小屏幕移动设备网页设计注意事项