我有一個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