gpt4 book ai didi

javascript - 修改 jQuery $ 函数以支持遗留代码

转载 作者:行者123 更新时间:2023-12-02 17:00:45 24 4
gpt4 key购买 nike

我加入了 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 合并到现有代码中的快速方法。

这种方法有问题吗?

最佳答案

使用它时我有两个担忧。

  1. 对于每个 jQuery 调用,您可能会查询 DOM 两次。额外的、不必要的负载。

  2. 您仍然可能遇到 jQuery 相关模块的兼容性问题。 document.getElementById() 返回的内容与 jQuery 返回的内容(jQuery 对象)不同。因此,如果库使用 $("#element") 并获取文档元素而不是 jQuery 对象,则可能会出现错误。

我不会推荐该解决方案。相反,为什么不在包含 jQuery 之前查找并替换 $( 呢?

关于javascript - 修改 jQuery $ 函数以支持遗留代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25746562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com