这是代码,我在函数中有一个菜单全局变量。我想在它之外使用它,但是我得到了一个“未定义的引用错误...·这是我仅有的javascript代码,所以不会干扰其他变量或函数。
提前谢谢。
$(function() {
menu = $('nav#menu').mmenu(
{
navbars: [
{
position: "top",
height : 1,
content : [
'<a href="#/" class="fa fa-phone"></a>',
'<img src="imagenes/wheel32.png" /><p class="navbartxt">bicimap.uy</p>',
]
},
{
position: "bottom",
content: [
'<a class="fa fa-envelope"></a>',
'<a class="fa fa-twitter"></a>',
'<a class="fa fa-facebook"></a>'
]
}
],
extensions: ["multiline"],
onClick: {
close: false
},
navbar:{
title: "Inicio"
},
offCanvas: {
zposition : "next"
}
});
});我需要将此代码放入函数中才能使其正常工作
var API = $("#menu").data( "mmenu" );
menu.on( 'click', 'a[class^="fa fa-twitter"]', function() {
$('#twitter').show();
var API = $("#menu").data( "mmenu" );
API.close();
return false;
});发布于 2016-01-23 08:21:50
我在这里缺少一些背景(我假设我们还没有看到更多?)
但您可能会在$(…)内部的代码运行之前执行后一个代码片段menu.on( 'click'… (在dom就绪时);因此menu将是未定义的。
如果您刚刚开始,那么有必要研究一下浏览器的开发人员工具,了解断点和日志记录。
您需要确保仅在设置了menu之后才使用它,很可能是通过延迟所有调用以使其处于就绪状态。
执行顺序
$被调用,并且该函数被作为第一个也是唯一一个参数提供。函数本身不是由called.API的结果定义的)这取决于您已添加此脚本的html文件中的位置。menu上调用的data方法(稍后仍为undefined$的函数,并最终定义菜单,以便以后有用<代码>H221<代码>G222发布于 2016-01-23 08:22:18
如果您的闭包/匿名函数是异步发生的,那么在计算其余代码时,工作可能还没有完成。我需要更多的上下文来确定这一点。
发布于 2016-01-25 14:42:13
这就是我找到的解决方案,也许它不是最好的,因为它可能会带来问题。由于某些原因,ready函数不能像上面显示的那样工作,可能需要一些资源。
menu = null;
$(function() {
menu = $('nav#menu').mmenu(
{
navbars : [{
position: "top",
height : 1,
content : [
'<img src="imagenes/wheel32.png" /><p class="navbartxt">bicimap.uy</p>',
]
},
{
position: "bottom",
content: [
'<a class="fa fa-envelope"></a>',
'<a class="fa fa-twitter"></a>',
'<a class="fa fa-facebook"></a>'
]
}
],
extensions: ["multiline"],
onClick: {
close: false
},
navbar:{
title: "Inicio"
},
offCanvas: {
zposition : "next"
}
});
});
$( window ).load(function() {
var API = $("#menu").data( "mmenu" );
menu.on( 'click', 'a[class^="fa fa-twitter"]', function() {
$('#twitter').show();
var API = $("#menu").data( "mmenu" );
API.close();
return false;
}
);
});https://stackoverflow.com/questions/34958079
复制相似问题