代码之家  ›  专栏  ›  技术社区  ›  Bernard Chen

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

  •  2
  • Bernard Chen  · 技术社区  · 16 年前

    我遇到了一个问题,我花了一些时间调试用于jQuery的插件(在本例中是jFeed)不工作的地方。问题最终是因为我们也使用了 Amazon Associates product previews . 产品预览代码最终通过document.write()包含许多其他JS文件,包括jQuery的另一个副本。因为产品预览代码出现在jFeed脚本下面,jQuery在没有getFeed函数的情况下被重新定义。

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

    2 回复  |  直到 16 年前
        1
  •  2
  •   Richard Nienaber    16 年前

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

     <script>
        var $jMain = jQuery;
     </script>
    

    然后你就可以使用 $jMain 而不是 jQuery $ . 在执行此操作时,您需要确保拥有正确的jQuery对象。这是我的建议 documentation

        2
  •  0
  •   Ben Zotto sberry    16 年前

    不幸的是,一个JS沙盒内的环境(如浏览器的窗口或框架内)并没有真正设计为支持从不同地方引入脚本的现代世界;你不可能说“定义这个对象,让它不被重新定义”(如果您尝试的话,您甚至可以重新定义大多数Javascript内置代码!)

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