Поведение Wierd.insertAfter()

Я пытаюсь вставить некоторые элементы между моими абзацами... - но это не совсем так, как задумано:

Я хотел бы увидеть что-то вроде этого:

<p>Text1.</p>
    <span>test1</span> <--injected element
<p>Text2.</p>
    <span>test2</span> <--injected element
<p>Text3.</p>
    <span>test3</span> <--injected element
<p>Text4.</p>
    <span>test4</span> <--injected element
    <span>test5</span> <--injected element
    <span>test6</span> <--injected element

Но результат выглядит немного иначе:

<p>Text1.</p>
<span>test6test5test4test3test2test1</span>
<p>Text2.</p>
<span>test6test5test4test3test2test1</span>
<p>Text3.</p>
<span>test6test5test4test3test2test1</span>
<p>Text4.</p>
<span>test6test5test4test3test2test1</span>

Мой код выглядит так:

$(document).ready(function() {  
            var xArray = 
            [
                "test0",
                "test1",
                "test2",
                "test3",
                "test4"
            ];
            $.each(xArray, function (index, value) {
                $("<span>" + value + "<span>").insertAfter(".articleText p");
            }); 
        });

Что делать / менять...?

1 ответ

        var $paragraphs = $(".articleText p");

        $.each(xArray, function (index, value) {
            $("<span>" + value + "<span>").insertAfter($paragraphs.eq(index));
        }); 

Вы вставляете элемент после ВСЕХ p теги вместо конкретного, который вы хотите. Ты можешь использовать eq выбрать правильный p элемент.

Вам также придется иметь дело со случаем, когда в вашем массиве больше элементов, чем у вас. p элементы.

Другие вопросы по тегам