jQuery:在对象文字中定义元素?

发布于 2024-10-19 12:07:39 字数 806 浏览 4 评论 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); })
  }

I am trying to define all my main variables within an object called globals. The problem is that when it comes to using a previous element such as membersTab to grab faces I get the error:

Uncaught TypeError: Cannot read property 'membersTab' of undefined.

What am I doing wrong?

 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); })
  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷你仙 2024-10-26 12:07:39

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

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

最简单的方法可能是这样的

globals = {};
globals.membersTab = $('#membersTab');
globals.faces = globals.membersTab.find('.member');
...

If your definition of globals is not inside $(document).ready(), it is possible that the page is not yet loaded, hence $('#membersTab') returns an empty collection.

Moreover when you declare faces, the object globals is not yet created.

The simplest way is probably something like

globals = {};
globals.membersTab = $('#membersTab');
globals.faces = globals.membersTab.find('.member');
...
余生再见 2024-10-26 12:07:39

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

首先声明全局对象。空赋值不是必需的,但这样做是为了清晰起见,并且如果编辑器支持的话,还可以提供良好的代码完成效果。这可以减少打字错误。

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

加载 DOM 后初始化对象。

$(function(){
    globals.siteWrap = $('#siteWrap');
    globals.content = $('#content');
    ...
})

The member membersTab isn't initialized until the literal is closed.

First declare the global object. The null assignments are not necessary but are there for clarity and also gives nice code completion if the editor has that support. This could reduce typing errors.

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

Initialize the object once the DOM is loaded.

$(function(){
    globals.siteWrap = $('#siteWrap');
    globals.content = $('#content');
    ...
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文