位置: 编程技术 - 正文

轻松搞定jQuery.noConflict()(轻松搞定是什么短语)

编辑:rootadmin

推荐整理分享轻松搞定jQuery.noConflict()(轻松搞定是什么短语),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:轻松搞定10种大片风格调色,轻松搞定鼻子的画法,轻松搞定老师布置的作业,解决家长出题难的烦恼,轻松搞定10种大片风格调色,轻松搞定老师布置的作业,解决家长出题难的烦恼,轻松搞定的成语,轻松搞定10种大片风格调色,轻松搞定10种大片风格调色,内容如对您有帮助,希望把文章链接给更多的朋友!

jQuery是目前使用最广泛的前端框架之一,有大量的第三方库和插件基于它开发。为了避免全局命名空间污染,jQuery提供了jQuery.noConflict()方法解决变量冲突。这个方法,毫无疑问,非常有效。遗憾的是,jQuery的官方文档对该方法的描述不够清晰,许多开发者并不清楚当他们调用jQuery.noConflict()时,究竟发生了什么,从而导致在使用时出现了许多问题。尽管如此,jQuery.noConflict()背后实现原理依然值得Web开发者学习掌握,成为解决类似全局命名空间污染问题的利器。

jQuery.noConflict()的作用?&#;&#;jQuery.noConflict()的存在只有一个目的:它允许你在同一个页面加载多个jQuery实例,尤其是不同版本的jQuery。你可能会觉得奇怪,为什么要在一个页面加载/使用多个不同版本的jQuery对象呢?一般而言,有两种情况。第一种情况,你的业务代码采用了最新版的jQuery库,而你选用的第三方插件依赖的更早版本的jQuery库;第二种情况,你正维护着一个系统,它已有的业务代码由于各种原因,引用了较老版本的jQuery库,你新开发的模块采用的是其他版本的jQuery库。不论哪种情况,你都不得不面对,jQuery对象/方法冲突的问题。幸运的是,jQuery.noConflict()帮你解决了这个烦恼。

jQuery被加载时发生了什么?&#;&#;当jQuery被页面引用/加载时,它被封装在一个自执行函数(匿名函数)里,它提供的所有一切变量、函数、对象都在匿名函数内部的可执行环境内,外部环境无法调用,以防止全局命名空间污染。

jQuery在匿名函数内部定义了两个全局对象:jQuery和$,把自己暴露给外部环境。开发者习惯使用的各种公共方法都是通过这两个对象进行访问的,如jQuery.ajax(),jQuery.css()等。在最初,它们指向匿名函数内部的同一个对象jQuery(私有变量),通过它访问匿名函数内部的私有变量和函数。这使得匿名函数在自执行后其内部的私有变量和函数仍然进驻在内存里,不会被javascript的垃圾回收机制清除。

轻松搞定jQuery.noConflict()(轻松搞定是什么短语)

&#;&#;当jQuery被页面加载后,当前页面有可能已经存在了jQuery和$这两个全局变量(比如,加载了其它的第三方库,其内部也定义了它俩),这就会导致已经存在的对象被覆盖(全局命名空间污染)。为了解决这个问题,jQuery在内部先将已经存在的全局变量缓存起来,保存在私有变量_jQuery和_$中,供后续调用。所以,如果页面在加载jQuery库时,还不存在jQuery和$对象,那么_jQuery和_$都是undefined;否则,它们都会保存对已有jQuery和$的引用(也许来自之前引用的第三方库或是不同版本的jQuery库)。之后,jQuery会像上文说描述的那样,覆盖这两个全局变量并将自己暴露给外部环境。至此,页面上的全局变量jQuery和$已经指向刚刚引入的jQuery库。

jQuery.noConflict()的神奇效果?&#;&#;假设你维护的系统已经引用了1.7.0版本的jQuery库,而你在新添加的功能里引用了1..2版本的jQuery库。那么,还有办法重新使用jQuery 1.7.0 或是同时使用两个版本的jQuery库吗?答案是肯定,那就是jQuery.noConflict()。实际上,利用jQuery.noConflict(),你可以立刻把全局变量jQuery和$重新指向之前引用的对象。很神奇吧?这就是为什么jQuery在对外暴露自己前内部缓存了之前引用的对象。&#;&#;jQuery.noConflict()接受一个可选的布尔值参数,通常默认值是false。这个参数会带来什么影响呢?其实,很简单。如果调用jQuery.noConflict()或是jQuery.noConflict(false),只有全局变量$会被重置恢复成之前的引用值;如果调用jQuery.noConflict()或是jQuery.noConflict(true),那么全局变量jQuery和$都会被重置恢复成之前的引用值。这一点非常重要,建议牢记。当你调用jQuery.noConflict(false/true)之后,它会返回当前jQuery的实例,利用这个特性我们可以实现jQuery的重命名。

我们再来看一个代码片段,测试一下是否真正理解了神奇的noConflict()

避免第三方库的冲突&#;&#;以上的代码片段展示了如何解决多版本jQuery的冲突。接下来,我们尝试解决jQuery库和第三方库的冲突,下面出现的代码片段在jQuery的官方文档中都有,有兴趣的程序猿可以仔细阅读官方文档体会其中的区别。

1、直接使用No-Conflict模式&#;&#;使用No-Conflict模式,其实就是对jQuery进行重命名,再调用。

2、使用自执行函数封装&#;&#;使用这种方式,你可以在匿名函数内部继续使用标准的$对象,这也是众多jQuery插件采用的方法。需要注意的是,使用这种方法,函数内部无法再使用prototype.js定义的$对象了。

3、使用标准jQuery(document).ready()函数&#;&#;如果jQuery库在其它库之前引入,那么jQuery内部定义的jQuery和$会被第三方库覆盖,这时候再使用noConflict()已经没有什么意义了。解决的方法很简单,直接使用jQuery的标准调用方式。

标签: 轻松搞定是什么短语

本文链接地址:https://www.jiuchutong.com/biancheng/381964.html 转载请保留说明!

上一篇:jQuery插件支持同一页面被多次调用(jquery.js插件)

下一篇:三分钟带你玩转jQuery.noConflict()(三分钟带你玩转灭火器)

  • 小规模纳税人个税是月报还是季报
  • 用友工资系统参数设置
  • 委托加工环节原材料收消费税吗
  • 土地闲置费是否可以税前扣除
  • 增值税专用发票和普通发票的区别
  • 期间费用包括哪三种
  • 红字发票的蓝字发票要退回吗
  • 加油站冲值加油怎么操作
  • 营改增后进项税额分摊
  • 职工培训费进项能抵扣吗
  • 现金支票存根联需要盖章吗?
  • 借别人的公账转账犯法吗
  • 停车费要交税吗
  • 违约金收入计入应纳税所得额吗
  • 先开票后预缴能跨年吗
  • 贷款合同个人有吗
  • 2021年路桥费抵扣最新政策
  • 计算并结转本月应交的城建税700元
  • 在建工程转固定资产当月提折旧吗?
  • 库存现金可以用于支付哪些钱
  • 金税盘减免政策依据
  • 应交税费应交增值税明细科目设置
  • 公司转账不开票备注服务费怎么入账
  • MAC系统如何卸载重装安装W7系统
  • linux转换windows
  • 苹果官网iPhone12
  • 360压缩怎么压缩到指定大小
  • 笔记本如何打开无线网络开关
  • PadExe.exe - PadExe是什么进程 有什么用
  • slee401.exe - slee401是什么进程 有什么用
  • PHP:pcntl_sigprocmask()的用法_PCNTL函数
  • 免税跟零税率
  • 微信公众号web开发
  • php文件缓存方法有哪些
  • 未分配利润为负的原因
  • pytorch x.view
  • 图幅翻译
  • git 查看所有commit
  • 勘察设计费怎么入账
  • 销售折扣购物卡怎么做账
  • 应交税款怎么计算
  • 企业投资计入什么科目
  • 销售成本销售收入的关系
  • 企业不年报会怎么样
  • 会计备案报送期间
  • 织梦自定义模型调用
  • 其他应收款怎么冲平会计分录
  • 负数发票开票条件?
  • 哪些企业可以不计提盈余公积
  • sqlserver 存储过程 临时表
  • 收到项目资本金入什么科目
  • 营业外收入的账户核算有哪些
  • 购入产品用作样品怎么做
  • 非盈利社会团体法人
  • 工程项目增值税预缴税率
  • 微信提现手续费多少?
  • 公司员工报销车费还需要签协议吗
  • 单位租用员工个人的车可以不收租吗
  • 到期不付款跟客户怎么说
  • 会计软件入什么科目
  • 捐赠利得计入资产成本吗
  • 新会计准则捐赠收入
  • LNMP下使用命令行导出导入MySQL数据库的方法
  • win8下载软件
  • windowsxp的开始菜单
  • mac如何设置启动系统
  • macOS 10.12.2下PDF崩溃严重怎么回事 macOS 10.12.2下PDF崩溃的原因以及解决办法
  • archlinux 配置网络
  • centos安装v2
  • win10 ex4
  • Win10 64位系统下火狐浏览器打开带flash网页卡死的解决方法
  • 复制打开网页
  • 内存 服务器
  • javascript怎么用
  • js加载3d模型
  • APP中javascript+css3实现下拉刷新效果
  • super函数python
  • 税务系统全面从严治党工作会议
  • 国家税务总局风险识别报告
  • 新车交购置税的流程图
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设