Jquery .append. После того, как отформатировать .each

Я пытаюсь добиться следующего:

<div class = "item">         
    <div class = "container-fluid">
        <div class = "row">
            <div class = "col-md-3">IMG</div>
            <div class = "col-md-9">TEXT</div>        
        </div>        
    </div>                    
</div>
<div class = "item">         
    <div class = "container-fluid">
        <div class = "row">
            <div class = "col-md-3">IMG</div>
            <div class = "col-md-9">TEXT</div>        
        </div>        
    </div>                    
</div> 

Вот что у меня есть на данный момент:

var ws_ftr = data.ws_ftr.records;
    console.info(JSON.stringify(ws_ftr));
    jQuery.each(ws_ftr, function(index, ftr) {
        jQuery('.carousel-inner').append('<div class = "item">');
        jQuery('.item').append('<div class = "container-fluid">');
        jQuery('.container-fluid').append('<div class = "row">');
        jQuery('.row').append('<div class = "col-md-3"><img src = "img/features_sliding/'+ftr[3] +'" alt = "feature-'+ftr[2]+'"/></div><div class = "col-md-9"><h2>'+ftr[2]+'</h2>'+ftr[1]+'</div>');

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

<div class = "item">
    <div class = "container-fluid">
        <div class = "row">
            <div class = "col-md-3">IMAGE</div>
            <div class = "col-md-9">TEXT</div>
            **<div class = "col-md-3">IMG</div>
            <div class = "col-md-9">TEXT</div>**

Это не должно давать мне col-md-3 и col-md-9 для каждого цикла, а вместо этого должно давать мне весь блок item.

Я новичок в jQuery / javascript и учусь по ходу дела. Может ли кто-нибудь объяснить мне, что я сделал не так, и как это исправить? Огромное спасибо!

Несвязанный: избегайте этого jQuery, используйте вместо него сокращение $.
Ele 20.03.2018 19:25

@Ele, не обязательно. Возможно, OP использует jQuery.noConflict

Phiter 20.03.2018 19:25

@Phiter хорошо, в таком случае отлично. :)

Ele 20.03.2018 19:27

Я не понимаю, что вам нужно сделать, вы можете быть более конкретным? Одно предложение, которое я могу вам дать, - закрыть добавленные div, созданные с помощью jQuery.

Phiter 20.03.2018 19:27

сделать все добавить в одну строку и проверить - jQuery('.carousel-inner').append('<div class = "item"><div class = "container-fluid"><div class = "row"><div class = "col-md-3"><img src = "img/features_sliding/'+ftr[3] +'" alt = "feature-'+ftr[2]+'"/></div><div class = "col-md-9"><h2>'+ftr[2]+'</h2>'+ftr[1]+'</div></div></‌​div></div>');

Serving Quarantine period 20.03.2018 19:31

Я думаю, проблема в том, что когда вы используете селектор вроде jQuery('.row'), он выбирает ВСЕ элементы div с строкой класса. Поэтому, когда ваш цикл запускается во второй раз, он также добавляется к элементам, которые вы создали в первом цикле ... И это продолжается с каждой итерацией .each.

Balázs Varga 20.03.2018 19:36

Я создаю виджет карусели ... Я предполагал, что div закроется после добавления. Это мой вопрос, я не уверен, как закрыть эти div ...

laural4705 20.03.2018 19:37

@ laural4705 вы пробовали мое решение, указанное в комментарии

Serving Quarantine period 20.03.2018 19:38

Да!! Это сработало отлично! Большое спасибо!!

laural4705 20.03.2018 19:42

@ laural4705 рад вам помочь. Я тоже добавил это как решение.

Serving Quarantine period 20.03.2018 19:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
10
46
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Просто заметил, что в вашем jQuery вы никогда не закрывали ни один из своих div. Итак, продолжая свой код, его можно завершить так:

   var ws_ftr = data.ws_ftr.records;
        console.info(JSON.stringify(ws_ftr));
        $.each(ws_ftr, function(index, ftr) {
            $('.carousel-inner').append('<div class = "item">');
            $('.item').append('<div class = "container-fluid">');
            $('.container-fluid').append('<div class = "row">');
            $('.row').append('<div class = "col-md-3"><img src = "img/features_sliding/'+ftr[3] +'" alt = "feature-'+ftr[2]+'"/></div><div class = "col-md-9"><h2>'+ftr[2]+'</h2>'+ftr[1]+'</div>');
            $('.container-fluid').append('</div>');
            $('.item').append('</div>');
            $('.carousel-inner').append('</div>');

);

Я считаю, что это также можно сделать так:

   var ws_ftr = data.ws_ftr.records;
        console.info(JSON.stringify(ws_ftr));
        $.each(ws_ftr, function(index, ftr) {
            $('.carousel-inner').append('<div class = "item"></div>');
            $('.item').append('<div class = "container-fluid"></div>');
            $('.container-fluid').append('<div class = "row"></div>');
            $('.row').append('<div class = "col-md-3"><img src = "img/features_sliding/'+ftr[3] +'" alt = "feature-'+ftr[2]+'"/></div><div class = "col-md-9"><h2>'+ftr[2]+'</h2>'+ftr[1]+'</div>');
);
Ответ принят как подходящий

1.Вместо нескольких .append() делайте все в одном .append()

2. Закройте все созданные вами div.

jQuery('.carousel-inner').append('<div class = "item"><div class = "container-fluid"><div class = "row"><div class = "col-md-3"><img src = "img/features_sliding/'+ftr[3] +'" alt = "feature-'+ftr[2]+'"/></div><div class = "col-md-9"><h2>'+ftr[2]+'</h2>'+ftr[1]+'</div></div></div></div>');

Примечание. Кажется, что проблему создают незамкнутые div.

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