0

我试图在一个名为globals. 问题是,当涉及到使用之前的元素时,例如membersTab抓取faces,我得到了错误:

未捕获的类型错误:无法读取未定义的属性“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); })
  }
4

2 回答 2

1

如果您的定义globals不在 inside $(document).ready(),则页面可能尚未加载,因此$('#membersTab')返回一个空集合。

此外,当您声明时faces,该对象globals尚未创建。

最简单的方法可能是

globals = {};
globals.membersTab = $('#membersTab');
globals.faces = globals.membersTab.find('.member');
...
于 2011-02-26T16:57:49.497 回答
0

在文字关闭之前,成员 membersTab 不会被初始化。

首先声明全局对象。空分配不是必需的,但为了清晰起见,如果编辑器支持,也可以很好地完成代码。这可以减少打字错误。

var globals = {
    siteWrap = null,
    content = null,
    ...
};

加载 DOM 后初始化对象。

$(function(){
    globals.siteWrap = $('#siteWrap');
    globals.content = $('#content');
    ...
})
于 2011-02-26T17:20:54.920 回答