Попытка указать целевой номер элемента LI в неупорядоченном списке и добавить html - PullRequest
0 голосов
/ 17 апреля 2020

Приветствие stackoverflow,

Я получил html код, сохраненный как переменная js с именем 'test'.

Затем я пытаюсь нацелиться на конкретный c (5-й ) li и добавьте HTML в строке под этим:

var target = $("ul[class='productWrapper']>li:nth-child(5)");

$(test).insertAfter($(target));

Я считаю, что у меня есть проблема с синтаксисом, связанная с тем, как я пытаюсь нацелиться на этот элемент LI, и я не уверен, является ли insertAfter правильный метод для этой задачи.

Все ваши мысли приветствуются!

1 Ответ

1 голос
/ 17 апреля 2020

Я думаю, все, что у вас есть, правильно, @JoeG. Я взял на себя смелость добавить немного контекста, и это, кажется, работает просто отлично. Я немного изменил ваш синтаксис, но не основной вопрос. Есть только два элемента, чтобы прояснить, что .insertAfter () поражает правильный, и только этот.

Вот HTMl со скриптом внизу.

<html dir="ltr" lang="en-US">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0"/>
    <style>
        body { display: flex; flex-direction: column; }
        ul { display: inline-block; list-style-type: none; text-align: left; background: #ccc; border-radius: 1rem; padding: 1rem; margin: 2rem auto; }
        .inserted { color: green;}
    </style>
</head>
<body>
    <ul class="productWrapper">
        <li>First</li>
        <li>Second</li>
        <li>Third</li>
        <li>Fourth</li>
        <li>Fifth</li>
        <li>Sixth</li>
    </ul>
    <ul class="someOtherClass">
        <li>Other First</li>
        <li>Other Second</li>
        <li>Other Third</li>
        <li>Other Fourth</li>
        <li>Other Fifth</li>
        <li>Other Sixth</li>
    </ul>

    <script src="//code.jquery.com/jquery-3.4.1.min.js"></script>
    <script>
        const $target = $(`ul[class='productWrapper']>li:nth-child(5)`)
        const $test = $(`<li class='inserted'>Inserted after fifth</li>`);
        $test.insertAfter($target);
    </script>
</body>
</html>

После полной загрузки страницы и завершения сценария, вот как выглядит страница, и я думаю, это то, что вы имели в виду.

screen after js executes

...