增加一个项目功能,在项目引入jQuery文件后又引入了一个prototype.js,将其引入后,功能可以正常使用但是发现页面内的其他jQuery方法开始报错。一开始想的是将prototype.js的方法封闭起来,就想当然的将prototype.js的源码拷入到引用的js文件中,结果发现影响是全局的。后来经过考虑,终于找到了正确的方法,将我自己的jquery代码封起来,项目正常运行。
;(function($) {
//jquery方法
})(JQuery);
其实,经过对比prototype.js与jQuery就会发现,两者的歧义主要在于"$",因此在不想重写某个功能需要保留prototype.js的情况下,我们可以给自己的立即执行函数加一个参数。
prototype.js后jQuery冲突的解决办法还有一个就是使用jQuery的noConflict()方法,许多 JavaScript 库使用 $ 作为函数或变量名,jQuery 也一样。在 jQuery 中,$ 仅仅是 jQuery 的别名,因此即使不使用 $ 也能保证所有功能性。假如我们需要使用 jQuery 之外的另一 JavaScript 库,我们可以通过调用 $.noConflict() 向该库返回控制权。在运行完这个函数之后,就只能使用jQuery变量访问jQuery对象(函数不带参数),例如jQuery('div')。