zoukankan      html  css  js  c++  java
  • 解决同一页面jQuery多个版本或和其他js库冲突方法

    <!DOCTYPE html>

    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title>jQuery测试页-111cn.net</title>
    </head>
    <body>
        <!-- 引入 jquery 1.8.0 -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
        <script type="text/javascript">
            var $180 = $;
        </script>
        <!-- 引入 jquery 1.9.0 -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
        <script type="text/javascript">
            var $190 = $;
        </script>
        <!-- 引入 jquery 2.0.0 -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
        <script type="text/javascript">
            var $200 = $;
        </script>

        <script type="text/javascript">
            console.log($180.fn.jquery);
            console.log($190.fn.jquery);
            console.log($200.fn.jquery);
        </script>
    </body>
    </html>

    解决同一页面jQuery多个版本或和其他js库冲突方法

    2.同一页面jQuery和其他js库冲突解决方法

    ①.jQuery在其他js库前

     代码如下 复制代码


    <!DOCTYPE html>

    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title>jQuery测试页-111cn.net</title>
    </head>
    <body>
        <!-- 引入 jquery 1.8.0 -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
        <script type="text/javascript">
            var $180 = $;
            console.log($.fn.jquery);
        </script>
        <!-- 引入 其他库-->
        <script type="text/javascript">
            $ = {
                fn:{
                    jquery:"111cn.net"
                }
            };
        </script>

        <script type="text/javascript">       
            console.log($.fn.jquery);
            console.log($180.fn.jquery);
        </script>
    </body>
    </html>

    解决同一页面jQuery多个版本或和其他js库冲突方法

    ②.jQuery在其他js库后

     代码如下 复制代码


    <!DOCTYPE html>

    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title>jQuery测试页-111cn.net</title>
    </head>
    <body>
        <!-- 引入 其他库-->
        <script type="text/javascript">
            $ = {
                fn:{
                    jquery:"111cn.net"
                }
            };
        </script>
        <!-- 引入 jquery 1.8.0 -->
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>

        <script type="text/javascript">   
            console.log($.fn.jquery);   
            var $180 = $.noConflict();
            console.log($.fn.jquery);
            console.log($180.fn.jquery);
        </script>
    </body>
    </html>

    解决同一页面jQuery多个版本或和其他js库冲突方法 

    再补充一下方法

    方案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,既能避免$冲突对该组件的影响,又无需要求使用公共 组件的人修改自己的代码。

     
  • 相关阅读:
    博客园CSS备份4
    博客园css备份3
    CSS透明滚动条效果
    AHK
    修改网页css的插件stlylebot
    欧陆词典CSS修改
    油猴脚本修改网页默认字体
    博客园上传css,js文件并引用
    CSS添加本地字体文件
    博客园css备份
  • 原文地址:https://www.cnblogs.com/200911/p/4791191.html
Copyright © 2011-2022 走看看