我尝试在旧项目中使用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
编辑:我不明白为什么问题被贬低......也许它指的是实现目标的非经典方式,但仍然是一个合法的问题
答案 0 :(得分:1)
你的问题似乎是......
这是你需要做的(按顺序)...
jQuery.fn
对象jQuery
和$
全局变量jQuery.fn
对象使用
恢复jQuery 2.1.4var jq311 = jQuery.noConflict(true)
初始化您的selectpicker
插件/元素
jq311('.selectpicker').selectpicker(...)
您可以安全地交换#5和#6,除非您使用$('.selectpicker')
代替jq311('.selectpicker')
。