我得到的?(” 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