jQuery
和prototype
都
是现在比较流行的Javascript开发框架,两者都拥有数量相当的粉丝,当然不排除同时喜欢使用两种框架的。但问题来了,由于jQuery以及
prototype都使用了美元符函数“$”作为选择器,在两者混合使用的时候$函数被重复定义了,结果导致其中一个框架不能使用。
流行的解法:
不过很快,有很多人给出了解决方案,如比较流行的方案是这样
的:
<script src="http://jquery.com/src/latest/"></script>
<script type="text/javascript">
JQ = $; //rename $ function
</script>
<script src="prototype.js"></script>
这样一来,你可以使用JQ来代替jQuery里的$函数名,而prototype的$函数照常使用,像这样:
<script type="text/javascript">
JQ(document).ready(function(){
JQ("#test_jquery").html("this is jquery");
$("test_prototype").innerHTML="this is prototype";
});
</script>
尽管这种办法在一定程度上解决了两者的冲突,但作为jQuery的死忠,我是万分不情愿改写$为JQ或其他替代的字符。反之Prototype的粉丝估计也会这样想。那么,是不是有另一种解决方案,让两种框架能和谐共处呢?现在流行和谐嘛!
另类解法:
先看一小段代码,猜一下会有什么效果?
1. <script type="text/javascript">
2. (function(name){
3. alert('hello '+ name);
4. })("world");
5. </script>
应该很简单吧?效果是弹出一个窗品说“hello
world”。仔细看这一段Script,前后有两个括号组成,第一个括号里面是一个function对象,第二个括号是一个字符串。可以这样理解,第一
个括号里面定义了一个函数,第二个括号里面给出的参数,两个加在一起实际上是完成了一次函数调用!
那现在来点真实的:
<script type="text/javascript" src="jquery-1.2.6.js">
</script>
<script type="text/javascript" src="prototype-1.6.0.2.js">
</script>
<div id="test_jquery"></div>
<div id="test_prototype"></div>
<script type="text/javascript">
<!--
(function($){
$(document).ready(function(){
alert($("#test_jquery").html("this is jqeury"));
});
})(jQuery);
$("test_prototype").innerHTML="this is prototype";
//-->
</script>
经测试,jQuery与Prototpye工作均正常。唯一以往常不一样的是,我们要在以前写的Jquery外面加多一个外套:
(function($){
//这里写Jquery代码
})(jQuery);
这个外套巧妙地利用函数局部变量的有效范围保证你可以安心地按原来的方式写Jquery代码,这个方案更合适现有Jquery的代码升级至Jquery + prototypt。
不足之处
:
还是不能解决Jquery插件的问题,这个问题是传统方法也无法解决的,只能够手动去修改插件脚本里面对$的调用,而根本的解决办法是以后的插件都用刚才那种另类的方式去写,才能保证其可用性。而Jquery UI现在好像是这样做了,我从Demo的源码
里面看到的。
另文见:http://www.fallever.com/blog/jeff/196/
分享到:
- 2008-07-22 15:45
- 浏览 2451
- 评论(1)
- 论坛回复 / 浏览 (1 / 3106)
- 查看更多
相关推荐
**jQuery和Prototype框架详解** jQuery和Prototype是两个非常流行的JavaScript库,它们极大地简化了JavaScript的DOM操作、事件处理和动画效果。在这个资源包中,您将找到关于这两个框架的API帮助文档,这对于学习和...
总之,对于希望将jQuery与Prototype混合使用的开发者来说,理解这两种框架的冲突及其解决方法,不仅可以帮助自己在现有项目中更好地实现功能,还能在未来开发新项目时避免类似的冲突,从而提高项目的质量和开发效率...
jQuery提供了`.ajax()`、`.get()`、`.post()`等方法,Prototype有`Ajax.Request`和`Ajax.Updater`等,它们都封装了底层的XMLHttpRequest操作,让开发者可以更专注于业务逻辑。 6. **jQuery的Ajax**:jQuery的Ajax...
jQuery是广泛使用的JavaScript库,它简化了JavaScript的许多方面,尤其是与DOM操作相关的部分。同时,"prototype"在这里可能指的是JavaScript对象原型,这是理解JavaScript面向对象编程的关键概念。 **JSON ...
总结这些手册,我们可以了解到JavaScript的核心概念、ECMAScript 5的特性,以及两个流行的JavaScript库——jQuery和Prototype的使用方法。通过学习这些资源,开发者不仅可以提升JavaScript的编码能力,还能掌握如何...
【标题】"CSS Jquery DHTML Prototype 经典电子书"揭示了Web开发中的三个...它可能涵盖.NET框架的使用、ASP.NET的开发、C#编程等方面,与CSS、JQuery和Prototype结合,能帮助开发者全面理解和掌握Web开发的各个环节。
Prototype的Class和Function扩展让JavaScript的类和函数更具表现力,但与jQuery相比,Prototype在现代Web开发中的使用相对较少,因为jQuery的流行和更广泛的支持。 在实际开发中,这三个框架往往结合使用,jQuery...
《jQuery与Prototype:源码解析、资料汇集及插件应用》 在Web开发领域,JavaScript库如jQuery和Prototype因其强大的功能和易用性而备受开发者喜爱。本资源合集包含了这两个库的源码、相关资料以及插件,为开发者...
`jQuery.fn.init.prototype` 被设置为 `jQuery.fn`(即 `jQuery.prototype`)的原因在于,我们希望所有通过 `jQuery.fn.init` 创建的对象都能够继承 `jQuery.prototype` 上的方法。这是JavaScript原型链的工作原理。...
以前好像在哪里看到过说jQuery与prototype存在冲突,但一直没在意。今天把自己用jquery框架写好的消息提示框特效放到公司原来的系统发现所有的消息提示效果都罢工了! 汗了半天还是没有发现原因,突然想到jquery与...
**jQuery与Prototype:JavaScript框架深度解析** 在Web开发领域,jQuery和Prototype是两个非常流行的JavaScript库,它们都致力于简化DOM操作、事件处理、Ajax交互以及动画效果。这两个框架各有特色,为开发者提供了...
它的最典型应用,就是在 CSS 选择符上使用 $,结果返回含有所有与 CSS 选择器匹配的页面 DOM 元素的 jQuery 对象。 PrototypeJS 库是一个单独的 JavaScript 文件,提供了许多有用的功能,如面向对象的抽象模型、...
Prototype与jQuery的对比 虽然Prototype和jQuery都致力于简化JavaScript开发,但两者有其独特之处。Prototype更注重于语言层面的扩展,提供了许多核心的JavaScript增强;而jQuery则以选择器和链式操作闻名,对DOM...
**jQuery和Prototype是两种流行的JavaScript库,它们都极大地简化了JavaScript的使用,使得网页开发更加高效。本资源包含最新的jQuery和Prototype的帮助文档,以CHM(Microsoft编译的HTML帮助)格式提供,非常适合...
本文将深入探讨两个广泛使用的JavaScript框架:JQuery和Prototype。 ### JQuery **简介** JQuery是由John Resig于2006年创建的一个轻量级、高性能的库,它的主要目标是简化DOM操作、事件处理、动画效果以及Ajax...
jQuery与Prototype框架详细对比分析: 1. DOM加载及ready方法: 在jQuery中,开发者可以利用$(document).ready(function(){});这一语法结构来确保在DOM完全加载后执行函数。这种机制对确保事件处理器正确绑定到DOM...
在给定的标题"JavaScript libraries--->jQuery, Prototype, Mootools, YUI, Extjs, Dojo"中,提到了五种著名的JavaScript库:jQuery、Prototype、Mootools、YUI和ExtJS。这些库都有各自的特性和优势,下面将详细介绍...
jQuery是继prototype之后又一个优秀的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 ...