【jQuery笔记Part1】05-jQuery解决冲突
jQuery解决冲突
- 当 jQuery 内部的 $ 被其他函数库覆盖
- 解决方案一:将所有 $ 替换为 jQuery
- 解决方案二:借助匿名函数包裹执行
- 当其他函数库的 $ 被 jQuery 覆盖
- 解决方案:解除 jQuery 对 $ 的引用
jQuery笔记目录
冲突产生场景:在做工程时,我们使用的库不仅仅是 jQuery,可能会用到其他函数库,此时可能会产生冲突。
当 jQuery 内部的 $ 被其他函数库覆盖
假设我们自己写了一个 js 函数库,ohter_lib.js,它包含了一个函数名为 $ 的函数。那么引入这个库后,这个库的 $ 将与 jQuery 中的 $ 发生冲突,jQuery 内部的 $ 会被覆盖。(注:后调用的库会覆盖先调用的库)
/*other_lib.js*/
function $(num) {alert('自定义库,用$作为函数名称' + num);
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div{background: red;width: 100px;height: 100px;margin-top: 20px;}</style>
</head>
<body><div id="div1">div1</div><div id="div2">div2</div><div id="div3">div3</div><br><button id="btn1">隐藏</button><button id="btn2">改变颜色</button><!--先调用jQuery库,再调用其他函数库-->
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script src="js/other_lib.js"></script>
<script type="text/javascript">$(function () {$('#btn1').on('click',function () {$('#div1').hide();});$('#btn2').on('click',function () {$('#div2').css('background', 'green')$('#div3').css('background', 'blue')});});</script></body>
</html>
此时,页面已经无法运行 jQuery 的代码。
解决方案一:将所有 $ 替换为 jQuery
<script type="text/javascript">jQuery(function () {jQuery('#btn1').on('click',function () {jQuery('#div1').hide();});jQuery('#btn2').on('click',function () {jQuery('#div2').css('background', 'green')jQuery('#div3').css('background', 'blue')});});
</script>
解决方案二:借助匿名函数包裹执行
借助匿名函数包裹执行,执行时传递 jQuery 对象,内部正常使用 $
<script>window.onload = function () {(function ($) {$(function () {$('#btn1').on('click',function () {$('#div1').hide();});$('#btn2').on('click',function () {$('#div2').css('background', 'green')$('#div3').css('background', 'blue')});});})(jQuery)}
</script>
当其他函数库的 $ 被 jQuery 覆盖
同样是上面的 other_lib.js ,里面包含了一个函数名为 $ 的函数。这次我们先引用这个这个函数库,再调用 jQuery,那么这个函数库的 $ 被 jQuery 覆盖。
/*other_lib.js*/
function $(num) {alert('自定义库,用$作为函数名称' + num);
}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>div{background: red;width: 100px;height: 100px;margin-top: 20px;}</style>
</head>
<body><div id="div1">div1</div><div id="div2">div2</div><div id="div3">div3</div><br><button id="btn1">隐藏</button><button id="btn2">改变颜色</button><!--先调用别的函数库再调用jQuery-->
<script src="js/other_lib.js"></script>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script><script>window.onload = function () {console.log($)};
</script></body>
</html>
此时控制台打印的是 jQuery 对象,而非我们定义的函数的输出,说明这个函数库的 $ 被 jQuery 覆盖了。
解决方案:解除 jQuery 对 $ 的引用
$.noConflict() 可以解除 jQuery 对 $ 的引用,并将引用赋给其他字符
<script>window.onload = function () {// 1.解除 jQuery 对 $ 的引用var _ = $.noConflict()_('#btn1').on('click',function () {_('#div1').hide();});_('#btn2').on('click',function () {_('#div2').css('background', 'green')_('#div3').css('background', 'blue')});console.log($)};
</script>
【jQuery笔记Part1】05-jQuery解决冲突相关推荐
- 【jQuery笔记Part1】06-jQuery对象与js对象转换
jQuery对象与js对象转换 概念 为什么要转换 转化方法 JS对象 -> jQuery对象 jQuery对象 -> JS对象 原理图 jQuery笔记目录 概念 jQuery对象 是通 ...
- 【jQuery笔记Part1】11-jQuery选择器
jQuery选择器 基本选择器 层级选择器 属性选择器 筛选选择器 siblings 案例 jQuery笔记目录 基本选择器 初始 html 页面: <!DOCTYPE html> < ...
- 【jQuery笔记Part1】10-jQuery操作html-获取设置
jQuery操作html-获取&设置 获取内容 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表 ...
- 【jQuery笔记Part1】09-jQuery操作css-尺寸
jQuery操作css-尺寸 width() height() innerWidth() innerHeight() outerWidth() outerHeight() outerWidth(tru ...
- 【jQuery笔记Part1】08-jQuery操作css-获取设置样式
jQuery操作css-css() 通过 css() 方法获取样式 通过 css() 方法设置样式 方法一:单一属性设置 方法二:链式调用 方法三:多个属性设置(最常用) 完整案例 jQuery笔记目 ...
- 【jQuery笔记Part1】07-jQuery操作css-添加删除切换类、开关灯泡案例
jQuery操作css-添加&删除&切换类 addClass() - 向被选元素添加一个或多个类 removeClass() - 从被选元素删除一个或多个类 toggleClass() ...
- 【jQuery笔记Part1】02-jQuery代码风格
jQuery代码风格 1. 代码风格 2. 基本语法格式 示例 jQuery笔记目录 1. 代码风格 在 jQuery 程序中,不管是页面元素的选择.内置的功能函数的调用,都是美元符号 $ 来起始的. ...
- 【jQuery笔记Part1】01-jQuery简介集成
jQuery简介&集成 JS的问题? jQuery 概念 jQuery 特点 jQuery 功能 jQuery 集成方式 本地集成 远程集成 jQuery笔记目录 JS的问题? onload ...
- 【jQuery笔记Part1】12-jQuery元素的角标
jQuery元素的角标 常见的鼠标事件 mouseenter 鼠标指针穿过被选元素时 mouseleave 鼠标移出被选元素内部时 mouseover 鼠标指针穿过被选元素或其子元素时 mouseou ...
最新文章
- 不知道什么时间收集的code
- Python剑指offer:矩形覆盖问题
- 物理化学 热力学第一定律的概念
- 比较常用的25条Excel技巧
- java随机星星怎么闪_canvas画随机闪烁的星星
- vue 图片自适应排列插件_vue自适应布局3种方法
- Keepalived+nginx+redis主从+tomcat一机多实例实现会话共享
- FISCO BCOS 区块链交易流程 区块
- 关于dubbo通信协议之对比
- 股票交易手续费怎么计算
- 单位根检验urdf_R语言时间序列函数整理[转]]
- UML --Package
- [画板]画PCB和玩植物大战僵尸
- 使用Eclips开发java程序
- 实在憋不住了,出来透透气。
- Mega2560(Arduino)Bootloader烧录指南
- 全球首个华纳兄弟酒店正式营业,《老友记》喷泉、全新蝙蝠侠战车亮相
- Python flask渲染模板注入
- C语言 栈的基本操作 栈的实现
- Java线程小刀牛试
热门文章
- 小事也能看出一个人的能力
- go Mutex (互斥锁)和RWMutex(读写锁)
- Vue.js开发记录--用watch监听对象中属性的变化
- Html中 table,list等表格 中 js 的 Checkbox全选,反选,单选,获取数据选中行 的写法
- deepin linux下解决Qt搜狗输入法无法输入中文
- ssms应用程序错误_来自应用程序的查询计划与SSMS不同时的性能故障排除
- azure 入门_Azure Databricks入门指南
- ssis zip压缩文件_在SSIS中处理参差不齐的正确格式的文件
- 学习SQL:使用日期和时间函数创建SQL Server报表
- alwayson高可用组_了解AlwaysOn可用性组上的备份-第1部分