解决同一页面jQuery多个版本或和其他js库冲突方法
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>jQuery测试页-111cn.net</title>
</head>
<body>
<!-- 引入 jquery 1.8.0 -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
var $180 = $;
</script>
<!-- 引入 jquery 1.9.0 -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script type="text/javascript">
var $190 = $;
</script>
<!-- 引入 jquery 2.0.0 -->
<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
<script type="text/javascript">
var $200 = $;
</script>
<script type="text/javascript">
console.log($180.fn.jquery);
console.log($190.fn.jquery);
console.log($200.fn.jquery);
</script>
</body>
</html>
2.同一页面jQuery和其他js库冲突解决方法
①.jQuery在其他js库前
代码如下 | 复制代码 |
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <script type="text/javascript"> |
②.jQuery在其他js库后
代码如下 | 复制代码 |
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <script type="text/javascript"> |
再补充一下方法
方案1:
引入noConflict(),将$替换为其他符号
代码如下 | 复制代码 |
var $j = jQuery.noConflict(); $j(document).ready(function(){ $j("#btn1").click(function(){ alert("Text: " + $j("#test").text()); }); }); |
缺点:引入了这段代码后,不仅是当前的js文件,该html引用的所有js中,如果有用到jquery中的$,都得用$j来代替之前的$
方案2:
代码如下 | 复制代码 |
ready函数是jquery的入口函数,可以 将$(document).ready(function(){ 替换成 jQuery( document ).ready(function( $){} |
缺点:只对ready嵌套内的代码有效,对嵌套外的代码是无效的。如果你所有的逻辑,都在写ready函数中,那没问题。但我们一般都会在ready函数之外写一些子函数,然后ready函数再去调用这些函数。这个方案对这些函数是无效的,因此这套方案有局限性。
方案3(推荐,特别是开发js插件时):
给js内容包上一个函数
代码如下 | 复制代码 |
或者
|
这个方法,没有上面两个方案的缺点,只会影响到被包在jQuery(function($){}中的代码。
不会影响到其他js代码,这一点很重要。试想一下,假如你写了一个js公共组件,该组件需要用到jquery,为了提高鲁棒性,需考虑$符号冲突问题。如
果使用方案1,那么别人在使用时,还得遵守你的约定,把自己js代码中的$改成$,而如果使用方案3,既能避免$冲突对该组件的影响,又无需要求使用公共
组件的人修改自己的代码。
相关文章
- js动画效果大全_jquery 动画
- html js 全局 变量,JS定义全局变量
- 用JS获取地址栏url参数的方法_js的url是啥
- JS面试题-js新增基本数据类型BigInt
- js中四舍五入的方法_JS取整
- JS获取当前年份_js获取当前时间年月日
- jQuery.validationEngine.js学习[通俗易懂]
- JS设置定时器_js设置定时器
- LayUi的from组件搭配jQuery提交
- WordPress 技巧:让 WordPress 真正支持 jQuery Lazyload
- 缓冲加载图片的 jQuery 插件 lazyload.js 使用方法详解
- Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法详解编程语言
- jquery.jCal.js显示日历插件详解编程语言
- jQuery表单插件jquery.form.js详解编程语言
- jQuery在vs2008及js文件中的无智能提示的解决方法
- 解决3.01版的jquery.form.js中文乱码问题的解决方法
- jQuery控制图片的hover效果(smartRollover.js)
- 博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
- jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
- Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
- jquery动态加载js三种方法实例
- UpdatePanel和jQuery不兼容局部刷新jquery失效
- js(jQuery)获取时间的方法及常用时间类搜集
- js实现幻灯片效果(基于jquery插件)
- js阻止冒泡及jquery阻止事件冒泡示例介绍
- js与jquery获取父元素,删除子元素的两种不同方法
- js与jquery获取父级元素,子级元素,兄弟元素的实现方法
- jquery插件lazyload.js延迟加载图片的使用方法
- jquery.form.js用法之清空form的方法
- js,jquery滚动/跳转页面到指定位置的实现思路
- Jquery修改页面标题title其它JS失效的解决方法
- 超棒的响应式布局jQuery插件Freetile.js
- jquery库文件略庞大用纯js替换jquery的方法
- 一个简单的动态加载js和css的jquery代码