我正在尝试在名为globals
的对象中定义所有主要变量。问题是,当使用membersTab
等前一个元素来抓取faces
时,我会收到错误:
未捕获的TypeError:无法读取undefined的属性'membersTab'。
我做错了什么?
var globals = {
siteWrap : $('#siteWrap'),
content : $('#content'),
membersTab : $('#membersTab'),
faces : globals.membersTab.find('.member'),
members : {},
mID : globals.siteWrap.attr('mID'),
uID : globals.siteWrap.attr('uID'),
mTag : globals.siteWrap.attr('mTag'),
uFirst : globals.siteWrap.attr('fn'),
uLast : globals.siteWrap.attr('ln'),
host : globals.siteWrap.attr('host'),
dialogueBox : $('#dialogueBox'),
screen : $('#screen').click(function(){ closeDialogue(true); })
}
答案 0 :(得分:1)
如果globals
的定义不在$(document).ready()
内,则页面可能尚未加载,因此$('#membersTab')
会返回空集合。
此外,当您声明faces
时,尚未创建对象globals
。
最简单的方法可能是
globals = {};
globals.membersTab = $('#membersTab');
globals.faces = globals.membersTab.find('.member');
...
答案 1 :(得分:0)
在文字关闭之前,成员membersTab未初始化。
首先声明全局对象。空分配不是必需的,但是为了清楚起见,如果编辑器具有该支持,也可以提供良好的代码完成。这可以减少输入错误。
var globals = {
siteWrap = null,
content = null,
...
};
加载DOM后初始化对象。
$(function(){
globals.siteWrap = $('#siteWrap');
globals.content = $('#content');
...
})