zoukankan      html  css  js  c++  java
  • jQuery和Prototype的兼容性和冲突的多种解决方法

    有两种情况:

    1.先加载Prototype,再加载jQuery。

    2.先加载jQuery,再加载Prototype。

    针对情况1:先加载Prototype,再加载jQuery。
    方法一:jQuery 库和它的所有插件都是在jQuery名字空间内的,包括全局变量也是保存在jQuery 名字空间内的。
    使用jQuery.noConflict();主要作用是在任何时候,只要在jQuery加载后就可以调用,将$符号的使用权返回给其它的js库,jQuery在创建它自己的名字空间时就将其它库的$保存在自己的一个变量当中。

    <html>  
    <head>  
    <script src="prototype.js"></script>  
    <script src="jquery.js"></script>  
    <script type="text/javascript" >  
    //各个js库之间的主要冲突在于$的冲突,这个方法是用来处理这个问题的  
    jQuery.noConflict();  
    
    //原本使用jQuery代码部分的$ 用jQuery替代  
    jQuery(document).ready(function (){  
    jQuery("div").hide();  
    });  
    
    // Use Prototype with $(...), etc.  
    $('proto').hide();  
    </script>  
    </head>  
    <body></body>  
    </html>


    方法二:如果你仍然想使用类似于$这样比较简短的字符,你可以将jQuery.noConflict()的返回值赋值给某个变量。这个变量就是jQuery的新缩写了,当然你可以使用$以外的任意字符串,比如:

    <html>  
    <head>  
    <script src="prototype.js"></script>  
    <script src="jquery.js"></script>  
    <script type="text/javascript" >  
    //$j就相当于jQuery,名称你可以自主定义  
    var  $j = jQuery.noConflict();  
     
    // Use jQuery via $j(...)  
    $j(document).ready(function (){  
    $j("div").hide();  
    });  
     
    // Use Prototype with $(...), etc.  
    $('proto').hide();  
    </script>  
    </head>  
    <body></body>  
    </html>

    方法三:如果你还是想使用$,而不想使用别的字符,也是可以的。而且通常程序员都比较喜欢这样做,因为这样做写好的代码几乎都不用替换原来的$符号。那就是利用名字空间的概念就所有的jQuery代码封装在document的ready事件名字空间范围内,如:jQuery(document).ready(这里填入jQuery代码)

    <html>  
    <head>  
    <script src="prototype.js"></script>  
    <script src="jquery.js"></script>  
    <script type="text/javascript" >  
    jQuery.noConflict();  
     
    // Put all your code in your document ready area  
    jQuery(document).ready(function ($){  
    // 这样你可以在这个范围内随意使用$而不用担心冲突  
    $("div" ).hide();  
    });  
     
    // Use Prototype with $(...), etc.  
    $('proto' ).hide();  
    </script>  
    </head>  
    <body></body>  
    </html>


    针对第二种情况:先加载jQuery,再加载Prototype。
    方法四:按照这样的顺序加载,就不存在其它js库的$符号被jQuery占用的问题。所以对其它的js库的代码可以不作任何修改,照常使用$,而对 jQuery可以使用jQuery来替代$。如:

    <html>  
    <head>  
    <script src="jquery.js"></script>  
    <script src="prototype.js"></script>  
    <script type="text/javascript" >  
    // 使用 jQuery 用 jQuery(...)  
    jQuery(document).ready(function (){  
    jQuery("div" ).hide();  
    });  
     
    // 使用 Prototype 时,用 $(...),  
    $('someid' ).hide();  
    </script>  
    </head>  
    <body></body>  
    </html>


    或者你不想写jQuery这么长的字符,你可以通过另外一种方法:
    方法五:

    var  $j = jQuery;
    转载请注明出处!小鱼阁工作室 -专注zencart建站,织梦企业建站,ecshop商城,二次开发,产品采集,模板修改!技术QQ 631992791
  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/afish/p/3996073.html
Copyright © 2011-2022 走看看