【问题标题】:Creating an object of Jquery objects创建 Jquery 对象的对象
【发布时间】:2013-11-02 03:34:56
【问题描述】:

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

var 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") 之类的操作更有效。感谢您的任何意见。

【问题讨论】:

    标签: javascript jquery dom optimization


    【解决方案1】:

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

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

    我还想知道 .each 是否比我的 Fields 子对象更有效,而不是像 $("input", "#popup") 之类的东西

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

    【讨论】:

    • 我认为你误解了第二个问题。至少我阅读它的方式是,问题是迭代自定义对象的Fields 属性与使用jquery 选择#popup 元素中包含的所有input 元素是否更有效。
    • @JamesMontagne 我认为你是对的。我已经更新了我的答案。
    • 嗯......如果你说的是真的,我的命名空间在文档准备好之前不能被评估。现在我考虑了一下,我的脚本正在 PageEnd 呈现,所以我使用的所有 DOM 元素都应该已经存在。因此,它似乎仍然为我工作的原因。感谢您帮助我意识到这一点 - 我知道有些事情没有加起来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多