我加入了stackoverflow,因为多年来这对我很有帮助,我非常擅长JavaScript,我看到了一些我可以贡献的问题。
我很快发现了无处不在的jQuery在stackoverflow上的存在,所以我决定学习它。我的第一个想法是, Wowzers!
我一直在使用我自己的美元符号功能,这很简单:
function $(id) {
return document.getElementById(id);
}
我知道我可以使用noConflict()
重新定义jQuery的$函数。
但是,我想保留noConflict()
打破任何jQuery插件,并因为我希望在即将退休后我的代码可以轻松维护。
问题是我的代码中有数万个$(...)
个实例。
我想出了一个方法,我认为将允许我使用jQuery的$函数而不会破坏我自己的代码:
jQuery.noConflict();
function $(id, context) {
var r= document.getElementById(id);
return !r || context ? jQuery(id, context) : r;
}
http://jsfiddle.net/0nxn3fd5/1/
的示例我很少使用标签名称作为ID,对于我编写的任何新代码,我都会停止这样做。这似乎是我将jQuery合并到现有代码中的一种快捷方式。
这种方法有问题吗?
答案 0 :(得分:2)
我会使用它有两个问题。
您可能会为每个jQuery调用两次查询DOM。额外的,不必要的负担。
您仍然可能遇到与jQuery相关模块的兼容性问题。 document.getElementById()返回的内容与jQuery返回的内容(jQuery对象)不同。因此,如果库使用$(“#element”)并获取文档元素而不是jQuery对象,则可能会出现错误。
我不推荐这个解决方案。相反,为什么不进行$的查找和替换(在包含jQuery之前?
答案 1 :(得分:0)
鉴于即将退休,问题在于您对将接管您的开发人员的关注程度。有些工具可以帮助您重命名旧的$()函数。 @Jason提到找/替,这很可能就足够了。如果没有,Facebook和jsgrep等工具可能有所帮助。回购存档,但我不应该想象工具应该停止工作。
答案 2 :(得分:0)
为什么不用jQuery(...)代替$(...)?当然,它有点长。但复制面食还有什么用呢?