TypeError:$(...)。selectpicker不是具有多个jQuery的函数

时间:2017-08-02 13:06:29

标签: jquery

我尝试在旧项目中使用bootstrap select,我无法修改旧代码,只是添加了我的代码。

由于内部原因,我必须使用jquery的第二个版本,让旧版本也可以工作,就我而言,我的代码是这样的:

console.log( "1st loaded jQuery version ($): " + $.fn.jquery );
                $ocLazyLoad.load('http:somepath/jquery/jquery-3.1.1.min.js').then(function(response) {
                    $timeout(function() {
                        console.log( "2nd loaded jQuery version ($): " + $.fn.jquery );
                        var jq311 = jQuery.noConflict(true);
                        console.log( "After jQuery.noConflict(true)" );
                        console.log( "1st loaded jQuery version ($): " + $.fn.jquery);
                        console.log( "2nd loaded jQuery version (jq311): " + jq311.fn.jquery );
                        $('.selectpicker').selectpicker({
                            style:'form-control',
                            showTick:true
                        });
                    },0);
                });

返回此日志:

1st loaded jQuery version ($): 2.1.4
2nd loaded jQuery version ($): 3.1.1
After jQuery.noConflict(true)
1st loaded jQuery version ($): 3.1.1
2nd loaded jQuery version (jq311): 3.1.1
TypeError: $(...).selectpicker is not a function

我做错了什么不能切换jQuery版本? 为什么它返回我"不是一个功能"错误?如上所示,至少加载了一个jQuery

编辑:我不明白为什么问题被贬低......也许它指的是实现目标的非经典方式,但仍然是一个合法的问题

1 个答案:

答案 0 :(得分:1)

你的问题似乎是......

  1. 您正在加载" bootstrap-select"插件源文件之前您已经加载了jQuery 3.1.1和
  2. 您正尝试使用jQuery 2.1.4
  3. 执行/ bind / init该插件

    这是你需要做的(按顺序)...

    1. 将jQuery 2.1.4添加到您的文档中(确保在 包含AngularJS之前发生
    2. 添加任何旧插件文件。这些将在2.1.4 jQuery.fn对象
    3. 中注册
    4. 添加jQuery 3.1.1。这将覆盖jQuery$全局变量
    5. 添加" bootstrap-select"插入。这将在3.1.1 jQuery.fn对象
    6. 中注册
    7. 使用

      恢复jQuery 2.1.4
      var jq311 = jQuery.noConflict(true)
      
    8. 初始化您的selectpicker插件/元素

      jq311('.selectpicker').selectpicker(...)
      
    9. 您可以安全地交换#5和#6,除非您使用$('.selectpicker')代替jq311('.selectpicker')