1

所以我想设计一个 jQuery 结构,以便将来为我的表单重构和添加字段更简单。我最初的想法是这样的。

变量 dom = {
    “弹出窗口”: {
        "Title": "编辑工单",
        “宽度”:弹出宽度,
        "容器": $("#TicketPopup"),
        “纽扣”: {
            "保存": $("#SaveTicketPopup"),
            "关闭": $("#CloseTicketPopup"),
        },
        “字段”:{
            "ID": $("#TicketPopupTableTicketID"),
            "ContactEmail": $("#TicketPopupTableUserEmail"),
            "联系电话": $("#TicketPopupTableUserPhone"),
            "名称": $("#TicketPopupTableItemName"),
            "CategoryString": $("#TicketPopupTableCategory"),
            "DateSubmittedString": $("#TicketPopupTableDateSubmitted"),
            "StatusString": $("#TicketPopupTableStatus"),
            "DateResolvedString": $("#TicketPopupTableDateResolved"),
            "DateArchivedString": $("#TicketPopupTableArchived"),
            "描述": $("#TicketPopupTableDescription"),
            "姓名首字母": $("#TicketUpdateInitials"),
        }
    }
}

我的问题主要围绕这样一个事实,即我可以在文档准备好之前进行初始化,尽管当时对象不一定在页面上。这是否意味着我正在调用 document.getElementById 而不是每次都存储结果元素?我还想知道在我的 Fields 子对象上使用 .each 是否比执行 $("input", "#popup") 之类的操作更有效。感谢您的任何意见。

4

1 回答 1

2

尽管当时对象不一定在页面上,但我可以在文档准备好之前进行初始化。这是否意味着我正在调用 document.getElementById 而不是每次都存储结果元素?

不,这意味着您的对象将只是空的并且您的代码将被破坏。在 DOM 中存在元素之前,您不能使用 jQuery 获取 DOM 元素。jQuery 选择器不会被延迟评估。您需要延迟脚本(或至少访问 DOM 的部分)的初始化,直到元素存在之后。

我还想知道在我的 Fields 子对象上使用 .each 是否比 $("input", "#popup") 更有效

迭代将大大提高效率Fields。您的脚本可能做的最慢的事情是访问 DOM;每次您可以使用现有的 jQuery 对象而不是再次查询 DOM 时,您绝对应该这样做。

于 2013-11-01T18:58:43.130 回答