jQuery是继prototype之后又一个优秀的Javascript框架,其宗旨是--WRITE LESS,DO MORE(写更少的代码,做更多的事情)。它是轻量级的js库(压缩后只有21k),这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。由此众多便利使得很多网站都在使用jQuery,但有时由于项目需要还要用到其它的Javascript库及其插件,因此有时会遇到与jQuery的冲突,比如在MoolTools的图片幻灯片插件Featured Content Gallery(FCG),在WordPress下使用时会与WP默认使用的jquery 1.3.2发生冲突,出现脚本错误,提示信息如下:
element.getElements is not a function.
因为上次在找图片浏览插件的时候,用的是ProtoType的插件,在Drupal下建立的网站,也是用的是jQuery库,因此当时也是与jQuery发生了冲突。
当jQuery库与其它JavaScript库发生冲突时,应该在其它JS库调用前使用noConflict就可以解决,以下为FCG与jQuery的例子:
<script type="text/javascript">
jQuery.noConflict();
function startGallery() {
var myGallery = new gallery($('myGallery'), {
timed: true
});
}
window.addEvent('domready',startGallery);
</script>
$.noConflict()这个函数将变量$的控制权让渡给第一个实现它的那个库,这样可以确保jQuery不会与其他库的$对象发生冲突。
在运行这个函数后,就只能使用iQuery变量访问jQuery对象。例如,在要用到$(“div p”)的地方,就必须换成jQuery(“div p”)。
以下为noConflict的例子:
jQuery.noConflict();
// 用jQuery代替之前的$访问对象
jQuery("div p").hide();
// 使用其他库的 $()
$("content").style.display = 'none';