如何将特定的jquery版本传递给bootstrap.min.js

时间:2014-11-13 18:12:00

标签: jquery twitter-bootstrap

我有一个小部件类型的js应用程序,它嵌入在许多网站中。我的小部件使用自己的jQuery和Bootstrap。有些网站也使用jQuery,但版本低于我在widget中使用的版本。

为了解决两个jQuery实例之间的冲突并使网站代码不知道我的jQuery,我添加了以下简单的逻辑:

// Backup websites jQuery objects
var websites$=$;
var websitesjQuery=jQuery;

var my$;

// Code for loading jQuery here...

function onjQueryLoad() {
    my$=$.noConflict();
    // Reverting jQuery variable objects to the one it was before loading my jQuery
    $=websites$;
    jQuery=websitesjQuery;
}

现在我想让bootstrap.min.js使用我的jQuery版本(保存在var my $中)。默认情况下,它使用预定义的jQuery变量。我想这样做是因为网站的jQuery太旧而且与引导程序不兼容。 我将感谢你的帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

这一切都取决于您加载脚本的顺序。您需要任何这种逻辑,事实上$.noConflict会为您完成大部分工作。

尝试做这样的事情

<script src="jquery_to_be_used_by_bootstrap.js"></script>
<script src="bootstrap.js"></script>
<script src="other_jquery_version.js"></script>
<script>
    // 'true' tells it to restore *both* `$` and `jQuery`
    // otherwise it just restores `$`
    var website_$ = $.noConflict(true);
</script>

现在,$jQuery(全局变量)将为jquery_to_be_used_by_bootstrapwebsite_$将为other_jquery_version

由于您无法编辑引导程序以告知其使用其他$(或jQuery)变量,因此您需要更新您的网站才能执行此操作。

这可以通过以下方式解决:

website_$(function($){
    // Anything in here can use `$`
    // and it'll be from `other_jquery_version`
});

演示这个概念:http://jsbin.com/dopomiyehu/1/edit?html,js,console

文档:http://api.jquery.com/jquery.noconflict/

答案 1 :(得分:0)

感谢Rocket提示&#34; 这完全取决于您加载脚本的顺序。&#34;,这解决了我的问题。

我在jQuery加载完成之后但在$ .noConflict()

之前放了bootstrap加载器
// Code for loading jQuery here...

function onjQueryLoad() {
    // Code for loading bootstrap.min.js here...
}

function onBootstrapLoad() {
    my$=$.noConflict(true);
}