1

そこで、フォームのリファクタリングとフィールドの追加を簡単にする jQuery 構造を設計したいと考えました。私の最初のアイデアはこのようなものでした。

var ドム = {
    "現れる": {
        "タイトル": "チケットの編集",
        "幅": popupWidth,
        "コンテナ": $("#TicketPopup"),
        "ボタン": {
            "保存": $("#SaveTicketPopup"),
            "閉じる": $("#CloseTicketPopup"),
        }、
        "田畑": {
            "Id": $("#TicketPopupTableTicketID"),
            "ContactEmail": $("#TicketPopupTableUserEmail"),
            "ContactPhone": $("#TicketPopupTableUserPhone"),
            "名前": $("#TicketPopupTableItemName"),
            "CategoryString": $("#TicketPopupTableCategory"),
            "DateSubmittedString": $("#TicketPopupTableDateSubmitted"),
            "StatusString": $("#TicketPopupTableStatus"),
            "DateResolvedString": $("#TicketPopupTableDateResolved"),
            "DateArchivedString": $("#TicketPopupTableArchived"),
            "説明": $("#TicketPopupTableDescription"),
            "イニシャル": $("#TicketUpdateInitials"),
        }
    }
}

私の質問は主に、オブジェクトがその時点でページ上にあるとは限らないにもかかわらず、ドキュメントの準備が整う前に初期化できるという事実に基づいて構成されています。これは、結果の要素を毎回保存するのではなく、document.getElementById を呼び出しているということですか? また、$("input", "#popup") のようなことをするよりも、Fields サブオブジェクトに対して .each を実行する方が効率的かどうかも疑問に思っていました。ご意見ありがとうございます。

4

1 に答える 1

2

その時点でオブジェクトがページ上にあるとは限らないにもかかわらず、ドキュメントの準備が整う前に初期化できます。これは、結果の要素を毎回保存するのではなく、document.getElementById を呼び出しているということですか?

いいえ、オブジェクトが単に空になり、コードが壊れることを意味します。要素がDOMに存在するまで、jQueryを使用してDOM要素をフェッチすることはできません。jQuery セレクターは遅延評価されません。要素が存在するまでスクリプト (または少なくとも DOM にアクセスする部分) の初期化を遅らせる必要があります。

$("input", "#popup") のようなことをするよりも、 Fields サブオブジェクトを .each する方が効率的かどうかも疑問に思っていました。

を反復する方がはるかに効率的Fieldsです。スクリプトが実行する可能性が最も高いのは、DOM へのアクセスです。DOM に再度クエリを実行する代わりに、既存の jQuery オブジェクトを使用できる場合は常に、そうする必要があります。

于 2013-11-01T18:58:43.130 に答える