【发布时间】:2017-12-25 22:54:14
【问题描述】:
我从事一个包含数千个 PHP 文件的大型项目。其中,有多个对 jquery 的引用干扰了我正在尝试实现的插件。
例如,让我们看看这个标记:
<html>
<head>
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.somePluginIamImplementing.min.js"></script>
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
</head>
<body>
<div id="example"></div>
<script>
$.noConflict();
jQuery(document).ready(function() {
// code works perfectly like this!
});
</script>
</body>
</html>
如您所见,我对 jquery 有多个引用,但这不是问题,因为我调用了 noConflict,它将全局范围的 jQuery 变量返回到第一个版本的变量。
但是,由于该项目包含许多动态创建的 PHP 文件,因此在我编写的 noConflict 行之后对 jquery 的引用很少,如下所示:
<div id="example"></div>
<script>
$.noConflict();
jQuery(document).ready(function() {
// code works perfectly like this!
});
</script>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"
integrity="sha256-Ls0pXSlb7AYs7evhd+VLnWsZ/AqEHcXBeMZUycz/CcA="
crossorigin="anonymous">
</script>
因此,我在 console.log 中收到错误 TypeError: $(...).somePluginIamImplementing is not a function。
如何只使用我喜欢的 jquery 版本来初始化插件?
【问题讨论】:
-
这个问题很难重现。目前尚不清楚您的插件是什么以及您要在哪里应用它。请在此处创建一个 jsfiddle 或可执行代码示例,这会导致此错误。
-
对于您必须工作的条件非常抱歉......关于主题 - 唯一可行的解决方案是将所有可能的 jquery 代码移动到页脚中进行大规模重构。像 Twig 这样的模板引擎可以帮助您。
标签: javascript php jquery html