Создание элемента с данными из массива при наведении

302
17 января 2018, 16:09

Итак, есть участок кода, который создает из массива список:

var cartArray = shoppingCart.listCart();
var output = "";
for (var i = 0; i<cartArray.length; i++) {
    output += "<li id='" + cartArray[i].id + "'>" +
    "<div class='preview' style='background-image: url(" + cartArray[i].img + ")'></div>" +
    "<a href='javascript:void(0)' class='delete-item far fa-times-circle' data-name='" + cartArray[i].name + "'></a>" +
    "</li>";
}
$("#panel").html(output);
$("#panel li").hover(
    function() {
// Можно было через атрибуты извлечь как-то так
// var name = $(this).attr("data-name");
// и затем поставить в нужное место кода, без участия массива
        for (var ..........) {
            panel.append( $( "<div class='item transition'><div class='title'>" + cartArray[i].name + "</div><a href='" + cartArray[i].link + "' class='link transition'>More images</a></div><div class='image' style='background-image: url(" + cartArray[i].img + ")'></div>" ) );
        }
    }, function() {
        panel.find(".item").remove();
    }
);

При наведении на сформированный пункт списка мне необходимо вывести блок в котором будут данные из того же массива за пределами ранее созданного списка. Я мог бы прописать для пунктов списка атрибуты и затем с легкостью их извлечь и подставить куда нужно, но, что-то мне подсказывает, что можно это дело сделать проще. Запросив нужные данные из массива сравнивая по ID или порядку в списке.

Answer 1

Если я все правильно понял, то как-то так:

$("#show-cart li").hover(
    function() {
        var id = Number($(this).attr("id"));
        for (var i in cartArray) {
            if (cartArray[i].id === id) {
                panel.append( $( "<div class='item transition'><div class='title'>" + cartArray[i].name + "</div><a href='" + cartArray[i].link + "' class='link transition'>More images</a><div class='image' style='background-image: url(" + cartArray[i].img + ")'></div></div>" ) );
            }
        }
    }, function() {
        panel.find(".item").remove();
    }
);

Берем id из пункта списка, сравниваем его с объектами в массиве и выводим нужные данные в блок.

READ ALSO
Из милисекунд в Чч:Мм Дд/Мм/Гг?

Из милисекунд в Чч:Мм Дд/Мм/Гг?

Здраствуйте, с back end`a приходит дата в милисекундах от 1970го

320
Несколько select&#39;ов с уникальными значениями

Несколько select'ов с уникальными значениями

Есть форма с несколькими selectНабор option у всех одинаковый

327
паттерн для input +123 (45) 678-901-234

паттерн для input +123 (45) 678-901-234

Помогите написать pattern для input +375 (23) 233-321-421 такого формата

279