• Jquery的$命名冲突解决


    问题描述:

      在Jquery库中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法。

      当引入多个js库后,其它的js库中也定义了$符号的话,就导致在使用$命名符时jquery的$和其它框架的$产生冲突(这里的冲突也和js库文件的引入顺序有关)。

    情况举例

    //  js引入顺序不同的结果 ($ 永远代表最后一个定义$的js库的符号)

    // --1
    <
    script src="prototype.js" type="text/javascript"/>
    <script src="jquery.js" type="text/javascript"/>
    // -- $代表的是jquery中定义的$符号,也可写成JQuery(
    'body').hide()。

    // --2
    <script src="jquery.js" type="text/javascript"/>
    <script src="prototype.js" type="text/javascript"/>
    // -- $代表的prototype.js中定义的$符号,如果我们想要调用jquery.js中的工厂选择函数功能的话,只能用全称写法JQuery('body').hide()。

    解决冲突:

      jquery提供了一个noConfilict的API来解决。

    使用方法:

    jQuery.noConflict();      // 运行这个函数将变量$的控制权让渡给第一个实现它的那个库。
    jQuery.noConflict(true);      // 将$和jQuery的控制权都交还给原来的库。

    常用汇总:

    1、将JQuery对$的控制权让给其他框架
    JQuery.noConflict();     // 返回值是JQuery;jquery.js中的$无法再使用,只能使用jquery.js中$的全称JQuery。
    2、自定义JQuery的别名 (当使用JQuery.noConflict()方法之后,可为JQuery重定义别名,来简化全称的写法)
    var $j = JQuery.noConflict(); 
    $j('body').hide();     // 此处$j就代表JQuery 

    3、使用语句块,在语句块中仍然使用jquery.js中定义的$

    // 将$的控制权让出,使用jQuery的$ (或 直接使用jquery)
    JQuery.noConflict(); JQuery(document).ready(function($){   $('body').hide(); // 此时在整个ready事件的方法中使用的$都是jquery.js中定义的$。
      // JQuery
    ('body').hide(); // 等同$的使用
    });
    或如下:
    
    // 定义匿名函数并设置行参为$ (function($){   .....   $('body').hide(); // 此时在这个语句块中使用的都是jquery.js中定义的$。 })(JQuery)

    或如下:
    // 自定义别名后,使用语句块
    var $j = jQuery.noConflict();
    $j(function(){
        $j("p").click(function(){
          alert("ok");
        }) ;    
    });

    注意:语句块的方法使用非常有用,在写自定义jquery插件时,应都使用这种写法,因为我们不知道具体工作过程中是如何顺序引入各种js库的,而使用语句块的写法可屏蔽冲突。

    博文转自:

    解决jquery$命名符和其它框架的冲突问题

    Jquery的$命名冲突

  • 相关阅读:
    转 ShowSlow+Yslow页面前端性能测试环境搭建
    ORA-01843 无效的月份
    微信回复图片
    springmvc 监听器getWriter() has already been called for this response问题
    执子之手 与子偕老
    美字
    睡至三更时凡功名都成幻境 想到百年后无少长俱是古人
    oracle regexp_like介绍和例子
    Oracle中如何判断字符串是否全为数字
    ruby for in 循环中改变i的值无效
  • 原文地址:https://www.cnblogs.com/libinblog/p/4428574.html
Copyright © 2020-2023  润新知