js冲突怎么解决?

JavaScript013

js冲突怎么解决?,第1张

jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,主要解决办法如下:

方法一:

<script type="text/javascript">jQuery.noConflict() //将变量$的控制权让渡给prototype.jsjQuery(function(){ //使用jQueryjQuery("p").click(function(){

alert( jQuery(this).text() )

})

})

$("pp").style.display = 'none' //使用prototype</script>

方法二:

<script type="text/javascript">var $j = jQuery.noConflict() //自定义一个比较短快捷方式$j(function(){ //使用jQuery$j("p").click(function(){

alert( $j(this).text() )

})

})

$("pp").style.display = 'none' //使用prototype</script>

方法三:

<script type="text/javascript">jQuery.noConflict() //将变量$的控制权让渡给prototype.js(function($){ //定义匿名函数并设置形参为$$(function(){ //匿名函数内部的$均为jQuery$("p").click(function(){ //继续使用 $ 方法alert($(this).text())

})

})

})(jQuery) //执行匿名函数且传递实参jQuery$("pp").style.display = 'none' //使用prototype</script>

一般你应该尽量使用面向对象的方式写JS,这样可以避免声明全局变量,全局变量是造成冲突的最大问题。普通人要想两个function都能访问一个变量,那肯定是声明全局变量了,但如果你想两个function能访问同一个变量,而第三个function又不能访问这个变量怎么办,这就会用到prototype属性了,例如:Sample1 = function(){ this.a = 1}Sample1.prototype.method1 = function(){ this.a++alert(this.a)}Sample2 = function(){ this.a = 3}Sample2.prototype.method1 = function(){ this.a++alert(this.a)}这样两个a就不会冲突,而又可以在方法之间共享,我也是kiang来的