引入jQuery后$冲突的解决办法
网站开发中的javasript部分,现在的开发人员很少有再去手工写document.getElementById()的了吧,那还不得累死,你还真别说,getElementById还真不好写,字母还挺多又区分大小写,一不留神就写错了。因此一下诸如用$来实现document.getElemetnById()就常见了。
function $() {var elements = new Array();for (var i = 0; i < arguments.length; i++) {var element = arguments[i];if (typeof element == 'string')element = document.getElementById(element);if (arguments.length == 1)return element;elements.push(element);}return elements;
}
微软的asp.net ajax客户端框架也有类似用$get来实现的代码。
var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) {
/// <param name="id" type="String"></param> 4.5.
/// <param name="element" domElement="true" optional="true" mayBeNull="true"></param> 6.7.
/// <returns domElement="true" mayBeNull="true"></returns> 8.9. var e = Function._validateParams(arguments, [{name: "id", type: String},{name: "element", mayBeNull: true, domElement: true, optional: true}]);if (e) throw e;if (!element) return document.getElementById(id);
. if (element.getElementById) return element.getElementById(id);// Implementation for browsers that don't have getElementById on elements: 28.29. var nodeQueue = [];var childNodes = element.childNodes;for (var i = 0; i < childNodes.length; i++) {var node = childNodes[i];if (node.nodeType == 1) {nodeQueue[nodeQueue.length] = node;}}while (nodeQueue.length) {node = nodeQueue.shift();if (node.id == id) {return node;}childNodes = node.childNodes;for (i = 0; i < childNodes.length; i++) {node = childNodes[i];if (node.nodeType == 1) {nodeQueue[nodeQueue.length] = node;}}}return null;
}
由于jQuery的简约、优美,更重要的是被微软所大力推广,因此在项目中引入jQuery就显得自然而必然,jQuery采用$函数来返回一个jQuery对象,也就是$=jQuery,引入jQuery后针对$符号问题必然产生冲突,因此主要有2个思路来解决。
一、利用jQuery.noConfict()使得$$等于jQuery,代码为$$=jQuery.noConflict()。这样需要做一下几件事
1、在包含jQuery以及基于jQuery的javasript代码文件中最后加上$$=jQuery.noConflict(),jQuery的VS智能提示文件(jQueryXXX –vsdoc.js)也最后的window.jQuery = window.$ = jQuery;也改成window.jQuery = window.$$ = jQuery;好了。
2、基于jQuery的插件和扩展文件最前面加上$=jQuery.noConflict();最后面加上$$=jQuery.noConflict();。
3、原有的$的实现文件中,最上面加上jQuery.noConflict()表示将$的“权力”交给其他我们自己的js文件,然后文件最后面加上$$=jQuery.noConflict()。
4、页面引入js的时候注意顺序,jQuery的相关文件放前面,与jQuery不相关的文件放后面。
这样做了之后,$还是表示以前的含义,而使用jQuery则直接用jQuery或者$$就可以了。
优点:只需要改几个文件就能达到目的。
缺点:$$使用起来并不顺手,以后引入jQuery插件时都需要按步骤2进行操作一次。
二、将原有的$进行替换,经过考虑后我采用的第二种方法,因为jQuery在以后的项目中将被广泛使用,使用$$或者jQuery来写代码毕竟别扭。考虑到asp.net ajax的兼容性,因此将原有$替换成$get。用Visual Studio来做替换到也不难
,但也还需要一点步骤。
1、首先用$get("替换掉$(",然后是用$get(‘替换掉$(',最后才是$get替换成$。
2、替换的时候利用VSS的签出提示功能,一个一个文件进行一定的确认(要是出了差错那可不是小事)。最后还是出了一些小问题,在同事的协助下也基本解决了。
3、Visual Studio的替换功能还真是袖里有乾坤,如下的一个Replace in Files东西还真不少。
Use那个勾上上,可千万别选Regular expressions,因为在右边清楚的显示$表示End of Line。Look In那个当然选Current Project,当然右边的按钮按下后可以选多个目录来框定反问,这个倒是以前完全没用过的。Look at these file types可以选定特殊的一些文件类型来缩小范围。
转载于:https://www.cnblogs.com/xiaopang2010/archive/2010/07/08/1773942.html
引入jQuery后$冲突的解决办法相关推荐
- ios 静态库冲突的解决办法
参考:http://www.cnblogs.com/machao/p/5288460.html ios 静态库冲突的解决办法 最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的 ...
- git rebase 的常见冲突及解决办法
1. git cherry-pick与git rebase 进行两个独立分支的代码合并时有两个比较常用的命令,分别是git cherry-pick <commit-id>和git reba ...
- office2016和Visio2016安装冲突的解决办法(后附安装包链接)
office2016和Visio2016安装冲突的解决办法 不管是先安装好office2016再安装Visio2016,还是先安装Visio2016再安装office2016,这两种方法在安装后者的时 ...
- Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法
Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...
- QQ2005Beta3与输入法组件冲突的解决办法(转)
QQ2005Beta3与输入法组件冲突的解决办法(转) 关于输入法与QQ2005beta3冲突的问题,腾讯官方已经给出了解决建议,请看―― 尊敬的QQ用户: 大家好!首先感谢大家选用了QQ的最新版:Q ...
- IP地址与网络上的其他系统有冲突的解决办法:
IP地址与网络上的其他系统有冲突的解决办法: 如果是用局域网,那么是局域网中有其他电脑的IP地址与你的电脑的IP地址相同, 如果是单机直接上网,那么需要检查自己所使用的设备中哪一个设备是冲突的原因,例 ...
- uniapp 开发APP 安卓手机中 在使用nvue时候 border的dashed和radius可能会有冲突的解决办法
uniapp 开发APP 安卓手机中 在使用nvue时候 border的dashed和radius可能会有冲突的解决办法 在开发中发现如果同时给了圆角 和 虚线 虚线属性会有问题 分别设置圆角 四个角 ...
- ajax--->请求异常 jQuery提示parsererror错误解决办法
请求异常 jQuery提示parsererror错误解决办法 参考文章: (1)ajax--->请求异常 jQuery提示parsererror错误解决办法 (2)https://www.cnb ...
- 服务器双网卡双IP双网关冲突的解决办法
Web服务器双网卡双IP双网关冲突的解决办法 2010-11-02 03:04web服务器带双网卡,每个网卡接不同的isp,ip以及网关都不同, 由于windows系统对双网关支持不好,会出现某个网卡 ...
最新文章
- Kanade's trio 2017多校#3 trie
- 大神教你如何给脚本写一个守护进程
- ARP解决方法/工具 真假ARP防范区别方法 ARP终极解决方案
- Arp协议和Arp欺骗
- 服务器json文件怎么创建对象,JavaScript中对JSON对象的基本操作示例
- Android开发之SDK开发获取资源id报错的问题
- 提取PCA变换后的图像的各主成分(matlab代码)
- 检查BUG插件 代码规范(Findbugs)插件 安装以及使用(idea)
- python第三方库安装路径
- 深度解析volatile关键字,就是这么简单
- Just Cause系列游戏品鉴
- Unity通过Animator获取动画clip时长
- Java版开源的端口映射工具
- 单链表的从小到大排序
- IAP 15 数据写入 flash
- 博客推广与论坛推广的优劣比较
- C++编写的简易宝可梦对战小游戏
- Python安装教程(3.8)
- 水果店行业分析,水果店行业前景分析
- 有哪些兼职能日入30元?
热门文章
- 【响应式Web前端设计】Viewport解析
- 单个正态总体均值的区间估计_考研数学闭关修炼习题讲解(3536)统计、估计与检验...
- 如何做网络营销推广浅析网站优化要做好哪些优化会获得搜索引擎的青睐?
- 网站优化之网站为什么要做301定向跳转?
- 如何对大量长尾关键词进行优化?
- 提高网站有效流量从三个方面出发
- 网站seo不能错过这几点!
- html的ol和ul和li,HTML 列表元素OL、UL、LI
- 分子排列不同会导致_原子或分子之间的作用力是什么力?
- java git subtree_Git subtree使用