在页面上包含两个版本的jQuery,而不会影响旧插件
我们的drupal站点运行jQuery版本1.2.1,我们还没有升级。
问题是这样的:
我们需要添加一个名为jQuery Tokeninput的新插件,但它只适用于最新的jQuery版本。 我们尝试使用旧版本添加最新的jQuery版本,但它会产生奇怪的结果。
我的问题是,如何在不影响旧的jQuery插件的情况下包含最新的jQuery文件?
方法#1 :(推荐)
你可以这样做:
这种方式当你想要用新版本的jquery而不是$
use $jq
。
$jq('.selector').on('click', function(){ //do something });
方法#2 :(可能会破坏您网站上的内容 – 不推荐)
在template.php
文件中:
array( 'cache' => TRUE, 'defer' => FALSE, ) ); // Merge back into the array of core JavaScripts $javascript['core'] = array_merge($javascript['core'], $core); // Rerender the block of JavaScripts $vars['scripts'] = drupal_get_js(NULL, $javascript); } }
请务必仅在您网站的前端执行此操作。 如果它们依赖于Drupal的jQuery版本,它可能会弄乱管理工具栏。
以下脚本……
-
与预先存在的脚本完全向后兼容
-
应该没有副作用(除了添加额外的JS下载的明显副作用)
- 允许任何版本的jQuery以任何顺序 – 你可以让“默认”是jQuery的旧版本,“附加”是更新的版本,反之亦然。
如何在同一页面上使用2个版本的jQuery
在这里看到它的运作:
这是您可以放入html文件进行测试的整个HTML
jQuery within jQuery Default jQuery: Loading...
Additional jQuery: Loading...
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed id felis quam. Morbi ultrices nisi vel odio vestibulum nec faucibus diam congue. Etiam cursus, turpis id rutrum adipiscing, ligula justo rhoncus ipsum, sed posuere diam orci vel mi. Etiam condimentum tincidunt metus, non dictum ligula hendrerit et. Nulla facilisi. Aenean eleifend volutpat nibh, eu tempor nulla auctor ac. Proin ultrices cursus scelerisque. Curabitur sem sapien, tempus et dictum nec, viverra vel odio. Nulla ullamcorper nisl a dolor laoreet eu eleifend tellus semper. Curabitur vitae sodales nisl. Donec tortor urna, viverra sed luctus in, elementum sit amet turpis.
您知道,有一个jQuery更新模块 ,它将为您更新jQuery版本,而无需您编写代码。 如果感兴趣的话,请查看它,但我不认为该模块保留旧的jQuery版本,而是将其替换为新版本。
我可能还建议您尝试升级jQuery的版本,并使用最新的版本来查看它是否确实打破了其他function。