Функция закрытия JQuery закрывается отдельно

У меня есть следующая функция:

function displayResults(Items) {
                $("#result").text("");
                $("#result").append('<div class="car-offers">');
                $("#result").append('<div class="purple"></div>');
                $("#result").append('<img src="images/caroffer.jpg" alt="" title="" width="213" height="117" />');
                $("#result").append('<h3>titleeee</h3>'); // ' + Items[i].Title + '
                $("#result").append('<span>Year: 2003</span>');
                $("#result").append('<span>Milage: 172,000 Km</span>');
                $("#result").append('<span class="price">53,000 QR</span>');
                $("#result").append('<a href="">Link</a>');
                $("#result").append('</div>');

                $("#result").append('<div class="car-offers">');
                $("#result").append('<div class="purple"></div>');
                $("#result").append('<img src="images/caroffer.jpg" alt="" title="" width="213" height="117" />');
                $("#result").append('<h3>titlee22</h3>'); // ' + Items[i].Title + '
                $("#result").append('<span>Year: 2003</span>');
                $("#result").append('<span>Milage: 172,000 Km</span>');
                $("#result").append('<span class="price">53,000 QR</span>');
                $("#result").append('<a href="">Link</a>');
                $("#result").append('</div>');
        }

моя проблема в том, что во время выполнения html отображается как: <div class="car-offers"></div>, поэтому вся страница перепутана

Ответ 1

Вы не можете добавить неполные фрагменты HTML с .append(). В отличие от document.write, метод jQuery .append() анализирует переданную строку в элементы перед добавлением их в DOM.

Итак, когда вы это сделаете:

$("#result").append('<div class="car-offers">');

jQuery анализирует данную строку в элементе div и присваивает значение car-offers свойству className, а затем добавляет вновь созданный элемент к элементу #result.

Добавление всей строки HTML в одной операции будет исправлено, поэтому jQuery знает, как правильно разобрать данную строку.


Лично я бы не предложил помещать много HTML внутри JS файла. Вы можете рассмотреть возможность помещать это внутри div с помощью display:none, а затем просто называть .show() на нем. Или сначала его на странице .detach(), который он хранит в переменной, и .append() при необходимости.

Ответ 2

Вы можете использовать массив с join, чтобы решить эту проблему

function displayResults(Items) {
    $("#result").text("");
    var array = [];
    array.push('<div class="car-offers">');
    array.push('<div class="purple"></div>');
    array
            .push('<img src="images/caroffer.jpg" alt="" title="" width="213" height="117" />');
    array.push('<h3>titleeee</h3>'); // ' + Items[i].Title + '
    array.push('<span>Year: 2003</span>');
    array.push('<span>Milage: 172,000 Km</span>');
    array.push('<span class="price">53,000 QR</span>');
    array.push('<a href="">Link</a>');
    array.push('</div>');

    array.push('<div class="car-offers">');
    array.push('<div class="purple"></div>');
    array
            .push('<img src="images/caroffer.jpg" alt="" title="" width="213" height="117" />');
    array.push('<h3>titlee22</h3>'); // ' + Items[i].Title + '
    array.push('<span>Year: 2003</span>');
    array.push('<span>Milage: 172,000 Km</span>');
    array.push('<span class="price">53,000 QR</span>');
    array.push('<a href="">Link</a>');
    array.push('</div>');
    $("#result").text(array.join(''));
}

Ответ 3

Это проблема, с которой я только что столкнулся. Опция состоит в том, чтобы сначала создать контейнеры div в цикле, а затем заполнить их по мере необходимости:

for(var i = 0; i < 12; i++){

    $(el).append('<li class="scene-block"></li>'); // create container li tags

    //fill empty li tags with content
    for(var j = 0; j < 2; j++){
        $(el).find('li').last().append('<div class="select-a-scene-bg"></div>');
    }

}