Не получается добавить OPTION в SELECT, используя jQuery

Создаю форму, используя только jQuery. В <BODY></BODY> файла .html НИЧЕГО нет.

Файл .js

var selectValues = { 1: "test 1", 2: "test 2", 3: "test 3" };

var $form = $("<form/>", {
    action: "script.php",
    method: "POST",
}),

apartMC = $('<div class="block" />').append(
    $("<div/>", {
        class: "infofield",
        text: "Выберите необходимые пункты",
    }),
    $("<i/>", {
        class: "infofield",
        text: "(можно выбрать несколько вариантов):",
    }),
    $("<br/>"),
    $("<select/>", {
        id: "apart",
        multiple: true,
    }),
    $.each(selectValues, function (key, value) {
        var $option = $("<option/>", {
            value: key,
            text: value,
        });
        $("#apart").append($option);
    })
);

$form
    .append(apartMC)
    .appendTo($("body"));

Файл .html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <script src="/web/scr2.js" defer></script>
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"> 
</script>
        <title>My app</title>
    </head>

    <body>
    </body>
</html>

В SELECT ничего не добавляется. Подскажите, пожалуйста, где ошибка?


Ответы (1 шт):

Автор решения: SwaD

Не самый оптимальный вариант, но тем не менее. Ошибка была в том, что на момент $.each не существовал #apart

var selectValues = { 1: "test 1", 2: "test 2", 3: "test 3" };

var $form = $("<form/>", {
    action: "script.php",
    method: "POST",
}),
apartMC = $('<div class="block" />').append(
    $("<div/>", {
        class: "infofield",
        text: "Выберите необходимые пункты",
    }),
    $("<i/>", {
        class: "infofield",
        text: "(можно выбрать несколько вариантов):",
    }),
    $("<br/>"),
    $("<select/>", {
        id: "apart",
        multiple: true,
    })
);

$form
    .append(apartMC)
    .appendTo($("body"));

$.each(selectValues, function (key, value) {
        var $option = $("<option/>", {
            value: key,
            text: value,
        });
      $("#apart").append($option);
    })
→ Ссылка