刚开始 郁闷了我好长时间.. 
找了好多地方,网上给出的办法 
 
Discuz和jQuery的冲突有两点,在/include/javascript/common.js文件的 
57~64之间有如下代码: 
Array.prototype.push = function(value) { 
this[this.length] = value; 
return this.length; 
} 
function $(id) { 
return document.getElementById(id); 
} 
Discuz为了兼容低版本的IE,重写了Array对象的push方法,但在重写之前没有做任何判断,改为一下形式: 
if(typeof Array.prototype.push === ‘undefined’) { 
Array.prototype.push = function(value) { 
this[this.length] = value; 
return this.length; 
} 
} 
第二点就是Discuz也有$()函数,就只是为了实现getElementById?功能没有人家强大就别学人家用美元符号嘛,占用符号资源。应该学学百度,人家就用一个字符G,多低调不和别人争美元。 
关于$()函数的冲突,jQuery中给出了解决方法,jQuery.noConflict(),把美元让给你(看看人家多大肚)。 
我们的jQuery代码可以这样写: 
var jq = jQuery.noConflict(); //把$让给第一个实现它的库,用jq代替 
jq(function() 
{ 
//********************** 
} 
); 
但是 描述不是很清晰… 
我自己改了下 …解决 兼容问题 解决了 
<script src="jQuery.js" type="text/javascript"></script> 
<script type="text/javascript">  
$(function() {  
var jq=jQuery.noConflict(true); //将变量$的控制权让渡给其他库。这样可以确保jQuery不会与其他库的$对象发生冲突。 
alert(jq("div").html());//正常 //alert($("div").html());//报错 
});  
</script>  
<div> <p>aaaaaaaaaaaaaaaaa</p></div> 
 
 
那为什么能 var jq=jQuery.noConflict(true) 这么写呢? 
首先我们看jQuery的源代码: 
noConflict: function( deep ) { 
window.$ = _$; 
if ( deep ) 
window.jQuery = _jQuery; 
return jQuery; 
} 
明显 ,当deep==true的时候,返回jQuery. 
所以我们var jq=jQuery.noConflict(true) 这样定义也就可以理解了。 
所以cssrain就可以代替jQuery了。从而确保jQuery不会与其他库的$对象发生冲突。 
  
 
 
 |