我加入了 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 合并到现有代码中的快速方法。
这种方法有问题吗?
最佳答案
使用它时我有两个担忧。
对于每个 jQuery 调用,您可能会查询 DOM 两次。额外的、不必要的负载。
您仍然可能遇到 jQuery 相关模块的兼容性问题。 document.getElementById() 返回的内容与 jQuery 返回的内容(jQuery 对象)不同。因此,如果库使用 $("#element") 并获取文档元素而不是 jQuery 对象,则可能会出现错误。
我不会推荐该解决方案。相反,为什么不在包含 jQuery 之前查找并替换 $( 呢?
关于javascript - 修改 jQuery $ 函数以支持遗留代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25746562/