我得到的?(」 flexNav)‘在多數民衆贊成初始化flexNav與此對象的自定義文件遺漏的類型錯誤’:
function setupFlexnav() {
// flexnav setup and options
//var isIE = false || !!document.documentMode;
//if (!isIE) {
$(".flexnav").flexNav({
'animationSpeed': 0,
'transitionOpacity': false,
'buttonSelector': '.menu-button',
'hoverIntent': true,
'hoverIntentTimeout': 100,
'calcItemWidths': false,
'hover': true
});
//}
//other custom code follows, but error is thrown on $(".flexnav").flexNav
}
//initialize flexnav
$document.ready(function() {
setupFlexnav();
});
'setupFlexNav()'方法在這個文件中的其他地方被調用,並且封裝在$ document.ready(){...}中,這應該停止調用flexNav()直到jQuery被加載。 BundleConfig在我的jquery.flexnav-custom.js腳本之前加載了jQuery-1.10.2.js,但在這兩個文件之後加載了一個jQuery-1.11.3.js文件。
我想知道是否加載2個版本jQue在同一頁面上會導致「未捕獲的類型錯誤」被拋出,但是這個代碼在源代碼管理中沒有改變6個月。直到今天,我還沒有收到這個flexNav()錯誤,所以除了flexnav的初始化之外,其他的東西一定會導致錯誤。我只是不知道有什麼。什麼會導致我的代碼開始拋出這個錯誤?謝謝!
是的,加載多個版本的jQuery可能會導致衝突 - 但是,您的錯誤消息給我的印象是flexNav()在加載插件之前調用。如果你將它包裝在一個jQuery就緒語句中,並且仍然出現這個錯誤,那麼打開你的控制檯並在控制檯中輸入flexNav(),然後按回車。你應該得到一個包含flexNav()對象的對象。如果你沒有,那麼你的插件腳本沒有加載。 – Korgrue
實際上,在'noConflict'模式下,可以在頁面上加載兩個版本的jQuery。但是你得到的錯誤與此無關。它只是說在你嘗試運行'flexNav()'函數的時候,它還沒有定義。它在插件內部被定義,當你加載它。所以你需要先加載插件,然後調用函數。實現它的最簡單方法是將函數封裝在'$(window).load(function(){/ * code here * /})'wrapper中。 '$(document).ready()'發生得更早,並且您的插件尚未加載。不過,它會被加載到'$(window).load()'上。 –
@AndreiGheorghiu:我仔細檢查了我的BundleConfig.cs文件,我先加載jQuery,接着是2個flexnav腳本,然後是自定義文件(main.js),它具有上述代碼。我將'$ document.ready'改爲'$(window).load(function(){setupFlexnav();});',並且我仍然得到'$(...)flexNav不是一個函數'錯誤。 – SammyPayne