所以我想设计一个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”)那样做。感谢您的任何意见。
答案 0 :(得分:2)
我可以在文档就绪之前进行初始化,尽管此时对象不一定在页面上。这是否意味着我调用document.getElementById而不是每次都存储结果元素?
不,这意味着您的对象将只是空的,您的代码将被破坏。在元素存在于DOM中之前,您无法使用jQuery来获取DOM元素。 jQuery选择器将不进行懒惰评估。您需要延迟脚本的初始化(或者至少是访问DOM的部分),直到在元素存在之后。
我也想知道。对于我的Fields子对象是否更有效率而不是像$(“input”,“#popup”)那样做
迭代Fields
会更有效率。脚本可能做的最慢的事情是访问DOM;每次你可以使用现有的jQuery对象而不是再次查询DOM时,你绝对应该这样做。