- 浏览: 510125 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (156)
- xml (4)
- web前端 (24)
- jQuery (18)
- java (38)
- SQL (9)
- perl (2)
- OTRS (1)
- GWT (4)
- Linux (32)
- Maven (2)
- Spring (2)
- Oracle Win7 (1)
- css (8)
- eclipse (3)
- mysql (11)
- tomcat (5)
- git (4)
- javascript (22)
- font (1)
- android (1)
- log4j (1)
- email (1)
- sublime plugin (1)
- html (2)
- matches (1)
- php (3)
- apache (3)
- gd (1)
- docker (5)
- rails (1)
- RabbitMQ (1)
- Ubuntu (3)
- L2TP VPN (1)
- nodejs (1)
- oraclejet (1)
- ubutun (1)
- ntp (1)
- ngix (1)
- ssl (1)
- https (1)
- Linux,Debian (2)
- dpkg (1)
- pac (1)
- vi (1)
- vim (1)
- java,http (0)
- httpClient (0)
- shutter (1)
- shell (1)
- redmine (1)
最新评论
-
纵观全局:
配置之后,连接显示不是私密连接
keytool生成证书与Tomcat SSL配置 -
zhuchao_ko:
可以 伪造
java获得ip地址 -
longhua2003:
代码太乱了
java下载文件 -
tomhat:
ccx410 写道 安装gwt报错,unable to ret ...
GWT CellTable -
ccx410:
安装gwt报错,unable to retrieve osgi ...
GWT CellTable
如何在一个页面上让多个jQuery共存呢?比如jquery-1.5和jquery-1.11。
你可能会问,为什么需要在一个页面上让多个jQuery共存?直接引用最新版本的jQuery不行吗?
答案是,不行。因为现实生活是非常残酷的。举个例子:
现有网站已经引用了jQuery 1.5以及相关插件。如果直接将jQuery升级到最新版,这些插件就不工作了,除非你能把这些插件全部升级,或者等各个插件的作者发布支持最新版jQuery的版本。
现在,如果我们要基于jQuery开发新的插件或者写JavaScript代码,用新版本会比较省时省力。
但旧版本又绝对不能扔掉,怎么办?
方法是通过jQuery的noConflict()来让多版本共存。
当我们导入jQuery时,jQuery仅向window这个全局空间注入两个变量:
window.$ = window.jQuery = { jQuery object };
同时,jQuery内部保留旧的window.$和window.jQuery对象的引用。当我们调用:
var $jq = $.noConflict();
window.$被恢复,但window.jQuery仍是jQuery。
当我们调用:
var $jq = $.noConflict(true);
window.$和window.jQuery都被恢复了,一切看起来就像jQuery从未被导入过一样,只不过可以通过变量$jq来使用jQuery。
所以,让新旧版本共存的jQuery可以这样实现:
<script src="jquery-1.5.js"></script>
<script src="jquery-1.11.js"></script>
<script>
// 现在window.$和window.jQuery是1.11版本:
console.log($().jquery); // => '1.11.0'
var $jq = jQuery.noConflict(true);
// 现在window.$和window.jQuery被恢复成1.5版本:
console.log($().jquery); // => '1.5.0'
// 可以通过$jq访问1.11版本的jQuery了
</script>
<script src="myscript.js"></script>
在myscript.js中,用$jq就可以访问1.11版本的jQuery了。
至此,问题解决。
但是,引入两个版本的jQuery后,页面被搞得乱七八糟。如果有人看不懂代码,把var $jq = jQuery.noConflict(true);删掉了怎么办?或者,把导入jQuery的两行互换了位置,最后就得不到正确的jQuery版本。
最好的办法是不改动页面,直接引用我们编写的新的js文件:
<script src="jquery-1.5.js"></script>
<script src="myscript.js"></script>
这样一来,我们就在myscript.js内部引用最新版jQuery,而页面无论有没有jQuery,有哪个版本的jQuery,我们都不关心。
开始编写新的更好的解决方案。首先,把myscript.js的主体确定下来:
// myscript.js
(function () {
// BEGIN
// TODO: javascript code here...
// END
})();
用匿名函数是个好习惯,不污染全局变量,同时杜绝外部代码访问。
下一步是直接把jQuery 1.11的代码嵌进去:
// myscript.js
(function () {
// BEGIN
/*! jQuery v1.11.1 */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?...
if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=...
},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(thi...
var $ = jQuery.noConflict(true);
// TODO: javascript code here...
// END
})();
嵌入的当然是压缩后的代码,一共3行,然后加一句:
var $ = jQuery.noConflict(true);
注意到$是一个局部变量,在后面的代码中,可以随时引用这个$,跟页面上其他版本的jQuery全局变量$不是一个对象。
最后一步工作就是检查jQuery的协议是否允许我们把jQuery源码直接嵌入我们自己的JavaScript代码。
你可能会问,为什么需要在一个页面上让多个jQuery共存?直接引用最新版本的jQuery不行吗?
答案是,不行。因为现实生活是非常残酷的。举个例子:
现有网站已经引用了jQuery 1.5以及相关插件。如果直接将jQuery升级到最新版,这些插件就不工作了,除非你能把这些插件全部升级,或者等各个插件的作者发布支持最新版jQuery的版本。
现在,如果我们要基于jQuery开发新的插件或者写JavaScript代码,用新版本会比较省时省力。
但旧版本又绝对不能扔掉,怎么办?
方法是通过jQuery的noConflict()来让多版本共存。
当我们导入jQuery时,jQuery仅向window这个全局空间注入两个变量:
window.$ = window.jQuery = { jQuery object };
同时,jQuery内部保留旧的window.$和window.jQuery对象的引用。当我们调用:
var $jq = $.noConflict();
window.$被恢复,但window.jQuery仍是jQuery。
当我们调用:
var $jq = $.noConflict(true);
window.$和window.jQuery都被恢复了,一切看起来就像jQuery从未被导入过一样,只不过可以通过变量$jq来使用jQuery。
所以,让新旧版本共存的jQuery可以这样实现:
<script src="jquery-1.5.js"></script>
<script src="jquery-1.11.js"></script>
<script>
// 现在window.$和window.jQuery是1.11版本:
console.log($().jquery); // => '1.11.0'
var $jq = jQuery.noConflict(true);
// 现在window.$和window.jQuery被恢复成1.5版本:
console.log($().jquery); // => '1.5.0'
// 可以通过$jq访问1.11版本的jQuery了
</script>
<script src="myscript.js"></script>
在myscript.js中,用$jq就可以访问1.11版本的jQuery了。
至此,问题解决。
但是,引入两个版本的jQuery后,页面被搞得乱七八糟。如果有人看不懂代码,把var $jq = jQuery.noConflict(true);删掉了怎么办?或者,把导入jQuery的两行互换了位置,最后就得不到正确的jQuery版本。
最好的办法是不改动页面,直接引用我们编写的新的js文件:
<script src="jquery-1.5.js"></script>
<script src="myscript.js"></script>
这样一来,我们就在myscript.js内部引用最新版jQuery,而页面无论有没有jQuery,有哪个版本的jQuery,我们都不关心。
开始编写新的更好的解决方案。首先,把myscript.js的主体确定下来:
// myscript.js
(function () {
// BEGIN
// TODO: javascript code here...
// END
})();
用匿名函数是个好习惯,不污染全局变量,同时杜绝外部代码访问。
下一步是直接把jQuery 1.11的代码嵌进去:
// myscript.js
(function () {
// BEGIN
/*! jQuery v1.11.1 */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?...
if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=...
},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(thi...
var $ = jQuery.noConflict(true);
// TODO: javascript code here...
// END
})();
嵌入的当然是压缩后的代码,一共3行,然后加一句:
var $ = jQuery.noConflict(true);
注意到$是一个局部变量,在后面的代码中,可以随时引用这个$,跟页面上其他版本的jQuery全局变量$不是一个对象。
最后一步工作就是检查jQuery的协议是否允许我们把jQuery源码直接嵌入我们自己的JavaScript代码。
发表评论
-
jquery-chosen.js示例使用方法
2021-02-21 17:18 1161## jquery-chosen.js示例使用方法 1. [ ... -
jquery-validate示例使用方法
2021-02-21 14:19 362## 示例使用方法 <form class=&qu ... -
JavaScript SizeToHuman 大小转换为mb kb tb等
2017-08-21 15:16 1529// byte数据单位转换(以B为基底) functio ... -
javascript 监听键盘事件
2017-04-14 10:38 2813var ie; var firefox; ... -
js去除字符串中的html标签,替换"为'
2016-11-10 14:10 1543今天做文本域编辑和提交,文本域的内容最好带格式,于是找了一些插 ... -
JavaScript从数组中删除指定值元素的方法
2016-10-11 13:13 755下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函 ... -
byte 的1024转换方法
2016-09-18 14:19 1023今天在要用到字节转换并且带上不同单位,于是在网上找了一下,记录 ... -
安装nodejs oraclejet
2016-05-05 16:45 841ubuntu下安装nodejs Debian and Ubu ... -
CSS几种特效整理
2016-04-19 09:55 539css用伪类before和after制作三角形箭头网上有一堆教 ... -
javascript 生成随机码或随机数
2016-01-15 14:01 2058/** * [getRandomNum 生成随机数] ... -
js 一些知识,js获取contxtPath
2015-11-12 13:49 1210var num = 1; var str = '1'; ... -
IE指定文档模式
2015-10-15 15:21 1027对于 Web 开发人员来说,文本兼容性是一个要考虑的重要问题。 ... -
JS判断鼠标向上滚动还是向下滚动
2015-09-25 17:52 2650js如何判断滚轮的上下滚动,我们应该都见到过这种效果,用鼠标滚 ... -
js验证组织机构代码
2015-09-18 18:06 43941.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位 ... -
jQuery 跳出each循环
2015-09-18 13:22 677jquery跳出 each 循环,要实现break和conti ... -
JSP和JSTL获取服务器参数
2015-09-11 13:57 1200<%@ page language="java ... -
JS,Jquery获取各种屏幕的宽度和高度,clientX,offsetX,在父窗口中获取iframe中的元素
2015-04-22 16:49 3450JS,Jquery获取各种屏幕的宽度和高度 Javascri ... -
javascript 保留2位小数
2014-09-15 13:15 1784<script type="text/ ... -
Spring MVC @RequestBody接收JSON报HTTP 415/400问题的解决
2014-08-27 13:06 3811Ajax请求传@RequestBody(接收JSON)参数时, ... -
JavaScript中实现replaceAll方法
2014-08-21 18:04 1095使用JavaScript replace方法,如果不使用正则表 ...
相关推荐
【jQuery版本共存的原因与挑战】 在Web开发中,经常会出现需要在同一个页面上使用不同版本的jQuery的情况。...在实际项目中,应尽量减少对多个jQuery版本的依赖,但如果无法避免,上述方法提供了一个可靠的解决方案。
在提供的压缩包中,包含了多个jQuery版本的CHM帮助文件,这些文件为开发者提供了详细而全面的API参考,涵盖了从jQuery 1.4.4到jQuery 3.1的不同版本。每个版本的CHM文件都对应了该版本jQuery的核心功能和更新内容,...
本文将深入探讨如何利用jQuery库来实现一个支持多个tab共存的动态标签页系统。 ### 一、理解jQuery与tab组件 jQuery是一个快速、简洁的JavaScript库,它极大地简化了HTML文档的遍历、事件处理、动画以及Ajax交互等...
这个资源集合了jQuery从1.5.2到1.8.3的多个版本,包括min版,即经过压缩和优化的版本,适用于生产环境以提高网页加载速度。 1. **jQuery的核心功能**: - **选择器**:jQuery通过类似CSS的语法提供了强大的DOM元素...
2. **链式调用**:jQuery对象的方法返回的是自身,使得多个操作可以连续调用,如`$("#element").css("color", "red").fadeIn(500)`。 3. **事件处理**:jQuery提供了统一的事件绑定和触发方式,如`$(document)....
- **jquery-1.6.1.min.js**:这是经过压缩和优化的版本,删除了不必要的空格和注释,提高了加载速度,适合在网站上部署使用。 **4. 使用 jQuery 开发** 使用jQuery进行开发时,通常会通过 `<script>` 标签引入...
这将在页面加载完成后为指定的输入框添加一个交互式的日历。 3. **功能特性** - **日期格式化**:Datepicker支持多种日期格式,如`mm/dd/yy`,`dd-mm-yyyy`等,可以通过`dateFormat`选项设置。 - **禁用日期**:...
随着Web技术的发展,jQuery经历了多个版本的更新。jQuery 3.x移除了对旧版IE浏览器的支持,优化了代码,提高了性能。jQuery 1.x和2.x则继续支持更广泛的浏览器。 **9. jQuery的生态系统** jQuery不仅仅是一个库,它...
jQuery提供了`noConflict()`模式,允许在同一个页面上与其他JavaScript库共存。通过正确管理和隔离作用域,可以避免命名冲突。 十、jQuery学习资源 除了文档和API,互联网上有许多jQuery教程、示例和社区,如...
在使用多个jquery.datatable控件并置入同一个页面的时候,可能会遇到checkbox全选功能异常的问题。具体表现为,当点击全选复选框时,页面上所有的datatable表格的全选复选框都会被选中,而不是仅限于当前操作的表格...
2. **避免使用$全局变量**: 在多个库共存时可能导致冲突,可以使用 `$.noConflict()` 解决。 3. **批量操作**: 避免对单个元素进行多次操作,应尽可能一次性选取并操作多个元素。 4. **使用最新的jQuery版本**: ...
这一特性在当今多设备共存的时代尤为重要,确保了应用的普适性和市场竞争力。 在2018.3.1017这个版本中,Kendo UI可能包含了一些性能优化、新功能的添加或者已知问题的修复。例如,可能提升了组件的渲染速度,增加...
jQuery Mobile是一个轻量级、跨平台的JavaScript库,旨在简化HTML5应用的创建,特别是在智能手机和平板电脑上。这本书面向的读者可能是对Web开发有一定基础,但希望深入了解移动开发的程序员。 jQuery Mobile的核心...
它与 IE、FireFox、Chrome 等浏览器保持兼容,在一个页面内可同时生成多个Tree 实例,支持一次性静态生成和Ajax 异步加载两种方式,能够响应和反馈多种事件。它提供了个性化的定制服务,支持灵活的参数配置,用户...
本文将深入探讨基于jQuery实现的选项卡组件,特别是“基于jQuery的tab选项卡完美改进版”,它支持在同一web页面上显示多个选项卡。 首先,jQuery是一个轻量级、功能丰富的JavaScript库,它简化了DOM操作、事件处理...
- **链式操作(Chaining)**:jQuery对象允许连续调用多个方法,如$("#element").css("color", "red").slideUp(),提高了代码的效率和可读性。 - **事件处理(Events)**:jQuery提供了一套统一的事件处理方式,如...
在多个插件共存的项目中,正确引入和初始化进度条插件是关键。可能需要使用命名空间或`$.noConflict()`来避免与其他库的冲突。 总的来说,jQuery进度条插件为开发者提供了便捷的方式来实现进度指示功能。理解...
在中国,jQuery 被广泛应用于多个知名网站和平台,如中国农业银行、中国交通银行、网易、百度、豆瓣、CSDN、凡客诚品、京东商城、卓越、高朋团购、拉手网、团宝网等,证明了其在实际项目中的稳定性和高效性。...