创建Jquery对象的对象

时间:2013-11-01 18:56:23

标签: javascript jquery dom optimization

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

var dom = {
    "Popup": {
        "Title": "Edit Ticket",
        "Width": popupWidth,
        "Container": $("#TicketPopup"),
        "Buttons": {
            "Save": $("#SaveTicketPopup"),
            "Close": $("#CloseTicketPopup"),
        },
        "Fields": {
            "Id": $("#TicketPopupTableTicketID"),
            "ContactEmail": $("#TicketPopupTableUserEmail"),
            "ContactPhone": $("#TicketPopupTableUserPhone"),
            "Name": $("#TicketPopupTableItemName"),
            "CategoryString": $("#TicketPopupTableCategory"),
            "DateSubmittedString": $("#TicketPopupTableDateSubmitted"),
            "StatusString": $("#TicketPopupTableStatus"),
            "DateResolvedString": $("#TicketPopupTableDateResolved"),
            "DateArchivedString": $("#TicketPopupTableArchived"),
            "Description": $("#TicketPopupTableDescription"),
            "Initials": $("#TicketUpdateInitials"),
        }
    }
}

我的问题主要围绕这样一个事实,即我可以在文档就绪之前进行初始化,尽管此时对象不一定在页面上。这是否意味着我调用document.getElementById而不是每次都存储结果元素?我也想知道。对于我的Fields子对象是否更有效率,而不是像$(“input”,“#popup”)那样做。感谢您的任何意见。

1 个答案:

答案 0 :(得分:2)

  

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

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

  

我也想知道。对于我的Fields子对象是否更有效率而不是像$(“input”,“#popup”)那样做

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