supesite 等程序中 $ 函数与 jquery 冲突的解决办法

北慕城南 提交于 2020-02-28 11:47:58

1.替换选择器函数

将原程序中的:

function $(id) {

    return document.getElementById(id);

}

 

替换为:

function $(id) {

    if (typeof jQuery == 'undefined' || (typeof id == 'string' && document.getElementById(id))) {

        return document.getElementById(id);

    } else if (typeof id == 'object' || !/^\w*$/.exec(id) || 
                            /^(body|div|span|a|input|textarea|button|img|ul|li|ol|table|tr|th|td)$/.exec(id)){

        return jQuery(id);

    }

    return null;

}

做一个兼容,对于以前直接用字符串ID的调用依旧使用document.getElementById(id)去获取DOM对象;而如果传入的ID是对象,或者里面有特殊符号(如 # . : ^ 等 jQuery 选择器符号)或者是常用的html标签,就使用jQuery选择器去获取jQuery对象。

 

2.需要先加载jquery的库,然后加载声明这个兼容的 $ 函数的js文件,以覆盖掉jquery的 $ 函数。

<script language="javascript" type="text/javascript" src="source/script_jquery.js"></script>

<script language="javascript" type="text/javascript" src="source/script_common.js"></script>

…………

 

假如有个TAG的ID是'ctrl_with_id',使用 $('ctrl_with_id') 取得的是DOM的对象,使用$('#ctrl_with_id')可取得jQuery对象,互相不会冲突。

如此,原来程序中的 $ 函数依旧工作,而且同时可以使用 $ 作为jQuery的选择器。

 

这么解决冲突,暂时还未发现问题。

后续有很多开发填坑的文章发布,如果对你有帮助,请支持和加关注一下

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944

https://shop119727980.taobao.com/?spm=0.0.0.0 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!