1

我有一个我无法控制的已弃用 JQuery 版本的脚本 src(通过 CMS 从外部控制,而不是跨域,只是无法更改它),我想将脚本 src 更改为更新版本的 Jquery .

旧代码:

<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>

用。。。来代替:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
4

3 回答 3

1

一旦加载了外部脚本,就无法将其删除,因为它已经加载到内存中,因此更改源代码只会加载另一个版本的 jQuery 而不会删除第一个版本,因此您将拥有两个版本的 jQuery,从而产生冲突,并且在许多情况下没有任何效果。

如果您绝对必须这样做,有一种解决方法:

$(function() {
    $j_142 = $.noConflict(true);
    $j_142.getScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', function() {
        $j_191 = $.noConflict(true);

    });
});

小提琴

现在您有两个版本的 jQuery 映射,要使用它们,您可以:

$j_191('#selector')

当然,这会导致已经编写的代码出现问题,但是您可能只需将第二个脚本映射到新变量或其他东西就可以逃脱吗?

编辑:

您可以使用闭包将其中一个值映射回闭包中的美元符号:

(function($) { //anonymous self invoking function

    // now you could use the dollarsign as normal

    $(function() {  // document ready function

    });

})($j_191);
于 2013-07-16T05:06:33.530 回答
0

您可以使用

var oldJquery = document.querySelectorAll('script[src="js/jquery-1.4.2.min.js"]');
oldJquery.src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"

一旦你这样做了,它会自动下载,因为它是实时的 dom 元素。所有更改都应立即反映。

但我建议从长远来看这不是一个好主意。如果来自谷歌的 CDN 宕机了怎么办。

你可能有麻烦了。在进行此更改时请采取预防措施。

于 2013-07-16T05:17:13.797 回答
0

很简单,这是你的代码:

$("script[src='js/jquery-1.4.2.min.js']").attr('src', '//ajax.googleapis.com/ajax/libs/jquery/1.9.2/jquery.min.js');

这是示例http://jsfiddle.net/rebeen/KwLM3/

于 2013-07-16T05:54:07.967 回答