首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有防止jQuery被重新定义的好方法?

有没有防止jQuery被重新定义的好方法?
EN

Stack Overflow用户
提问于 2010-02-10 14:27:08
回答 2查看 1.9K关注 0票数 2

我遇到了一个问题,这个问题花了我一些时间来调试,因为我用于jQuery的一个插件(在本例中是jFeed)无法工作。问题最终是因为我们也使用了Amazon Associates product previews。该产品预览代码的结果是通过document.write()包含许多其他JS文件,包括jQuery的另一个副本。由于产品预览代码显示在jFeed脚本下面,因此重新定义了不带getFeed函数的jQuery。

有没有一种最佳实践来确保像jQuery这样的特定对象在一个页面上只定义一次?我正在考虑C/C++中的#ifndef,但我不知道在这种情况下它会如何工作,因为我没有再次编写动态引入jQuery的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-10 14:34:44

我认为在您的情况下,最好将jQuery变量重新定义为其他变量。其他jQuery代码可能使用不同的版本,因此您可能希望定义一个新变量来指示您正在使用的jQuery。

你可以这样做:

代码语言:javascript
复制
 <script>
    var $jMain = jQuery;
 </script>

然后,您只需使用$jMain,而不是jQuery$。在执行此操作时,将由您来确保拥有正确的jQuery对象。这是documentation

票数 2
EN

Stack Overflow用户

发布于 2010-02-10 14:33:22

不幸的是,JS沙箱中的环境(就像在浏览器的窗口或框架中)并不是真正设计为支持从不同地方拉入脚本的现代世界;您不可能说“定义这个对象并使其不能重新定义”。(如果您尝试一下,甚至可以重新定义大多数Javascript内置组件!)

你最好的办法是确保你的代码是最后求值的,这让你在运行时对环境的状态有最终的决定权。这并不意味着其他代码不能随后出现并冲击您的定义,但这通常是非常糟糕的形式。例如,您可以通过将脚本标记作为文档体中的最后一个元素来实现此目的。

另请参阅这个jQuery方法,它不会直接帮助您,但会让您思考页面共享的一些解决方案:http://api.jquery.com/jQuery.noConflict/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2234862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档