js中function $(id)与jquery发生冲突的解决方法

文章2016-02-243,508 人已阅来源:网络
本文章来给大家介绍js中function $(id)与jquery发生冲突的解决方法,有碰到此类问题的朋友可进入参考。

$(id)是js document.getElementById(id)的简写,定义了这个方法以后调用的时候就可以直接用类似于jquery中那样的$("img-icon").onclick简单封装。所以很多人喜欢这样写:

var $ = function(id){
return document.getElementById(id);
};

但是这一类js代码会和与JQuery对象获取函数冲突会与JQuery冲突的,导致JQuery获取不了对象,出现类似于:Uncaught TypeError: Cannot set property 'onclick' of null 这样的错误提示。
安全的写法可以这样

var $id = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
};

或者:

var $id = function (id) {
return typeof id == "string" ? document.getElementById(id) : 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;
}