jquery中美元符号($)命名冲突

2023-05-16

      在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg') 的写法。然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突。下面以引入两个库文件 jquery.js和prototype.js为例来进行说明。


第一种情况:jquery.js在prototype.js之后进行引入,如: < script src = " prototype.js " type = " text/javascript " />

< script src = " jquery.js " type = " text/javascript " />


在这种情况下,我们在自己的js代码中如下写的话: 
  

$( ' #msg ' ).hide();


$永远代表的是jquery中定义的$符号,也可以写成JQuery('#msg').hide();如果想要使用prototype.js中定义的$,我们在后面再介绍。


  

 


第二种情况:jquery.js在prototype.js之前进行引入,如:
< script src = " jquery.js " type = " text/javascript " />

< script src = " prototype.js " type = " text/javascript " />


在这种情况下,我们在自己的js代码中如下写的话: 
  

$( ' #msg ' ).hide();

$此时代表的prototype.js中定义的$符号,如果我们想要调用jquery.js中的工厂选择函数功能的话,只能用全称写法JQuery('#msg').hide().

 


下面先介绍在第一种引入js库文件顺序的情况下,如何正确的使用不同的js库中定义的$符号。


一.使用JQuery.noConflict()
      该方法的作用就是让Jquery放弃对$的所有权, 将$的控制权交还给prototype.js,因为jquery.js是后引入的,所以最后拥有$控制权的是jquery。它的返回值是JQuery。当 在代码中调用了该 方法以后,我们就不可以使用$来调用jquery的方法了,此时$就代表在prototype.js库中定义的$了。如下:
JQuery.noConflict();

// 此处不可以再写成$('#msg').hide(),此时的$代表prototype.js中定义的$符号。

JQuey( ' #msg ' ).hide();

自此以后$就代表prototype.js中定义的$,jquery.js中的$无法再使用,只能使用jquery.js中$的全称JQuery了。

 


二.自定义JQuery的别名
      如果觉得第一种方法中使用了JQuery.noConflict()方法以后,只能使用JQuery全称比较麻烦的话,我们还可以为JQuery重定义别名。如下:

var $j = JQuery.noConflict();

$j( ' #msg ' ).hide(); // 此处$j就代表JQuery


自此以后$就代表prototype.js中定义的$,jquey.js中的$无法再使用,只能使用$j来作为jquey.js中JQuery的别名了。


  

 


三.使用语句块,在语句块中仍然使用jquery.js中定义的$,如下:


  
  
JQuery.noConflict();
JQuery(document).ready(function($){ $(
' #msg ' ).hide(); // 此时在整个ready事件的方法中使用的$都是jquery.js中定义的$. });
或者使用如下语句块:


  
  
(function($){ $( ' #msg ' ).hide(); // 此时在这个语句块中使用的都是jquery.js中定义的$. })(JQuery)

如果在第二种引入js库文件顺序的情况下,如何使用jquery.js中的$,我们还是可以使用上面介绍的语句块的方法,如:

< script src = " jquery.js " type = " text/javascript " />
< script src = " prototype.js " type = " text/javascript " />

   
   
< script type = " text/javascript " >
(function($){ $(
' #msg ' ).hide(); // 此时在这个语句块中使用的都是jquery.js中定义的$. })(JQuery)
</ script >

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


ps :jquery中特殊字符的含义:

#  指示 id 

.  指示 class 
*  全选 
,  多选 
空格 后代 
>  子 
~  兄弟 
+  下一个 
:  子(多功能) 

()  函数式的过滤与查找

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jquery中美元符号($)命名冲突 的相关文章

随机推荐

  • Libev源码解析

    最近在看libev源码 xff0c 算是对libev的源码有个比较清晰的了解 总共分3部分来介绍libev 1 Libev是什么 Libev是基于Reactor模式的一个高性能 xff0c 支持高并发的事件库 它本身不仅支持IO xff0c
  • Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面 .相机.录影机....

    Android开发之Intent跳转到系统应用中的拨号界面 联系人界面 短信界面 现在开发中的功能需要直接跳转到拨号 联系人 短信界面等等 xff0c 查找了很多资料 xff0c 自己整理了一下 安装已经存在的apk String file
  • C++ STL中判断list为空,size()==0和empty()有什么区别

    关于两个的区别 xff0c 首先size 61 61 0为bool表达式 xff0c empty 为函数调用 xff0c 这一点很明显 查看源代码 xff0c bool empty const return M node gt M next
  • 安装Intellij,编译第一个android程序出错

    今天安装了最新的Intellij社区最新版 xff0c 安装完成后 xff0c 发现编译第一个android程序 xff0c 出现如下编译错误 Cannot run program 34 D Android platform tools a
  • 【霸指拓客】抖音自动引流脚本源码终端开发

    lt lt 抖音自动引流脚本源码 gt gt auto 等待广告加载 launchApp 34 抖音极速版 34 sleep Math random 100 43 10000 click 34 我知道了 34 sleep 3000 back
  • 关于BeanUtils 那点屌事

    今天出现一个线上bug 我在排查代码的时候 xff0c 两个高开在我身后陪我排查代码 xff0c 慌的一批 xff0c 害怕让他们看见不爽的代码 xff0c 结果还真发现了 xff0c 然后被屌了 xff0c 如下 List lt Stud
  • 爬虫requests使用代理报错Your proxy appears to only use HTTP and not HTTPS...

    python版本 xff1a 3 9 4 requests版本 xff1a 2 28 2 详细报错如下 Max retries exceeded span class token keyword with span url span cla
  • 【网络安全】Kali linux超详细入门教程,Linux初学者勿进

    学习网络安全的同学应该都听过 Kali Linux 的大名 xff0c Kali Linux 相比与普通 Linux 附带了大量入侵和渗透的工具和软件 xff0c 在渗透测试和白帽子方面处于业界领先 正是因为这个原因 xff0c 许多人都会
  • Ubuntu登录管理员账户时,输入密码后一直在登录界面循环

    Ubuntu登录管理员账户时 xff0c 输入密码后 xff0c 一直在登录界面循环 xff0c 进不去系统界面 百度了好久 xff0c 也没有找到解决的办法 xff0c 我只能说百度真够可以的了 果断翻墙Google xff0c 找到不少
  • PreparedStatement和Statement的区别与联系

    一 概念 1 PreparedStatement xff1a PreparedStatement是java sql包下面的一个接口 xff0c 用来执行SQL语句查询 xff0c 通过调用connection preparedStateme
  • C#编程规范

    http www cnblogs com zyh nhy archive 2007 10 11 921250 html 第一章 概述 规范制定原则 1 方便代码的交流和维护 2 不影响编码的效率 xff0c 不与大众习惯冲突 3 使代码更美
  • c++,vc6.0 报错unreferenced local variable

    c 43 43 xff0c vc6 0 报错 unreferenced local variable 原因 xff0c 有的东西没有用到 xff0c 如果真的没有用的话可以直接删掉
  • Servlet学习之生成随机数

    令页面生成一个每五秒产生一个数字的动态图 span class token keyword package span com span class token punctuation span servlet span class toke
  • 程序员也该懂点UI细节

    虽然说项目开发过程中 xff0c 美工和程序各司其职 但是很多时候程序员本身也要知道一些UI设计的细节 一 每个页面的功能上要突出重点 比如说你首页是想引导更多用户注册的话 xff0c 你就要把注册按钮突出出来 如果你首页是你想引导用户更快
  • ftp 客户端软件的传输模式ASCII和二进制

    FTP可用多种格式传输文件 xff0c 通常由系统决定 xff0c 大多数系统 包括UNIX系统 只有两种模式 xff1a 文本模式和二进制模式 文本传输器使用ASCII字符 xff0c 并由回车键和换行符分开 xff0c 而二进制不用转换
  • 百度2015校园招聘软件开发笔试题及答案

    简单题 xff08 本题共30分 xff09 请简述Tcp ip的3次握手以及4次挥手过程 xff1f 并解释为何关闭连接需要4次挥手 10分 详细答案参见TCP IP协议三次握手与四次握手流程解析 TCP三次握手 四次挥手过程如下 通常情
  • 一步一步定制自己的google map(各个省市的经纬度查询)

    安徽省 合肥 北纬31 52 东经117 17 安徽省 安庆 北纬30 31 东经117 02 安徽省 蚌埠 北纬32 56 东经117 21 安徽省 亳州 北纬33 52 东经115 47 安徽省 巢湖 北纬31 36 东经117 52
  • 网页刷新或者重新加载后滚动条的位置不变

    在开发的过程中我们经常需要重新加载或者刷新某个画面 xff0c 已确保数据显示是最新的 但是如果一丁点改变就刷新画面的话 xff0c 会导致用户体验很差 xff0c 想想看你好不容易把网页拖到最后 xff0c 结果点击某个按钮的时候 xff
  • 番茄工作法(番茄钟时间管理)

    番茄工作法是我一次偶然的时间在网上看到的 xff0c 因为自己性格大大咧咧 丢三落四 xff0c 所以经常容易在时间问题上犯迷糊 很多人都有时间拖沓症 xff0c 就是一件事不到最后阶段不去解决它 比如你有一个星期的时间写的毕业论文 xff
  • jquery中美元符号($)命名冲突

    在Jquery中 xff0c 是JQuery的别名 xff0c 所有使用 的地方也都可以使用JQuery来替换 xff0c 如 39 msg 39 等同于JQuery 39 msg 39 的写法 然而 xff0c 当我们引入多个js库后 x