解决Jquery和prototype的兼容问题,jqueryprototype

 

  1. 引入jquery 时,将jquery库在 prototype之前引入;

 

2.使用时: 

    jQuery.noConflict();  // 这个要在 之前加上

 

3.初始化加载 (这里我试过,可以有两种写法)
     ①jQuery(document).ready(function() {

               这里面用到的$符号,全部用jQuery代替.
     })

    ② jQuery(document).ready(function($) {   //在里面加上一个$   

                这里的$符号 可以不变,直接使用
     })

 

  1. 引入jquery 时,将jquery库在 prototype之前引入; 2.使用时:
    jQuery.noConflict(); // 这个要在 之前加…

jQuery中需要用到$符号,如果其他js库(例如大名鼎鼎的prototype)也定义了$符号,那么就会造成冲突,会影响到js代码的正常执行。jqeury提供了一些方案来避免这个问题,让我们来看看这几个方案有什么区别

方案1:
引入noConflict(),将$替换为其他符号

复制代码 代码如下:

var $j = jQuery.noConflict();
$j(document).ready(function(){
$j(“#btn1”).click(function(){
alert(“Text: ” + $j(“#test”).text());
});
});

缺点:引入了这段代码后,不仅是当前的js文件,该html引用的所有js中,如果有用到jquery中的$,都得用$j来代替之前的$

方案2:
ready函数是jquery的入口函数,可以
将$(document).ready(function(){
替换成
jQuery( document ).ready(function( $){}
缺点:只对ready嵌套内的代码有效,对嵌套外的代码是无效的。如果你所有的逻辑,都在写ready函数中,那没问题。但我们一般都会在ready函数之外写一些子函数,然后ready函数再去调用这些函数。这个方案对这些函数是无效的,因此这套方案有局限性。

方案3(推荐,特别是开发js插件时):

给js内容包上一个函数

复制代码 代码如下:

jQuery(function($){
//你的js代码放在这里(例如第二个方案提到的ready函数和子函数)
//如果是js文件,其实就是在文件头部和尾部各加一行代码
}

或者

复制代码 代码如下:

(function($) {
//你的js代码
})(jQuery);

这个方法,没有上面两个方案的缺点,只会影响到被包在jQuery(function($){}中的代码。
不会影响到其他js代码,这一点很重要。试想一下,假如你写了一个js公共组件,该组件需要用到jquery,为了提高鲁棒性,需考虑$符号冲突问题。如果使用方案1,那么别人在使用时,还得遵守你的约定,把自己js代码中的$改成$,而如果使用方案3,既能避免$冲突对该组件的影响,又无需要求使用公共组件的人修改自己的代码。

您可能感兴趣的文章:

  • jQuery与其它库冲突的解决方法
  • 解决jquery版本冲突的有效方法
  • 找到了一篇jQuery与Prototype并存的冲突的解决方法
  • 永利开户送38元体验金,加载jQuery后$冲突的解决办法
  • JQuery的$和其它JS发生冲突的快速解决方法
  • jQuery库与其他JS库冲突的解决办法
  • jquery插件冲突(jquery.noconflict)解决方法分享
  • 解决jquery插件冲突的问题
  • jquery与js函数冲突的两种解决方法
  • 关于jQuery库冲突的完美解决办法

相关文章