我有一个RequireJS设置,用于加载Select2 jQuery插件。在加载时立即加载Select2 jQuery插件RequireJS
我有一个问题,但是这意味着在页面加载,浏览器默认选择输入显示几秒钟,然后换出高级的Select2输入大概由于RequireJS异步加载我的脚本。
有没有一种方法可以避免这种情况,而不必将脚本包含在HTML中?
这是我RequireJS设置:
require.config({
baseUrl: '/assets/js',
paths: {
jquery: '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min',
async: 'libs/async',
modernizr: 'libs/modernizr-custom',
jqueryUI: 'libs/jquery-ui.min',
bootstrap: 'libs/bootstrap.min',
select2: 'libs/select2.min',
},
shim: {
'select2': {
deps: ['jquery'],
exports: 'Select2'
},
'bootstrap': {
deps: ['jquery'],
exports: 'Bootstrap'
},
'jqueryUI': {
deps: ['jquery'],
exports: 'jQueryUI'
},
}
});
requirejs(["app/polyfills"]);
requirejs(["app/filter"]);
requirejs(["app/select"]); // Select2 plugin trigger
requirejs(["app/datepicker"]);
requirejs(["app/popover"]);
requirejs(["app/dropdown"]);
requirejs(["app/tooltip"]);
requirejs(["app/layout"]);
requirejs(["app/menu"]);
requirejs(["app/toggles"]);
这是实际的脚本:
define(['select2'], function(Select2) {
var app = {};
app.select = (function(){
var module = {};
module.init = function(){
$(".select-advanced").select2({
width: 'off',
dropdownAutoWidth: 'true',
});
};
return module;
})();
$(document).ready(function(){
app.select.init();
console.log('select');
});
});
对不起 - 我的意思是包括,不是内联(我编辑的问题)。选项3适用于我,因为我不支持关闭JS的用户。谢谢 – jshjohnson 2014-10-30 12:42:34
很高兴帮助!我已经删除了内联括号中的括号,将我的答案与问题的新状态同步。 :) – Louis 2014-10-30 12:44:14