#javascript #jquery #loops
Вопрос:
Извините за мой плохой английский, но,
Я пытаюсь зациклить все дочерние элементы в массиве, но он продолжает зацикливать только первый элемент, однако, сколько элементов внутри родительского
$(".js-drawer-open-cart").on("click", function (event) { var items = []; $(".cart__items .cart__item").each(function () { let product_title = $(".cart__item--name").attr("data-product-title"); let product_id = $(".cart__item--name").attr("data-product-id"); let product_variant = $(".cart__item--name").attr("data-product-variant"); let product_quantity = $(".cart__item--name").attr("data-product-quantity"); let product_price = $(".cart__item--name").attr("data-product-price"); dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. var item = {}; item.item_name = product_title; item.price = product_price; item.item_brand = "El grande Porto"; item.item_variant = product_variant; item.quantity = product_quantity; items.push(item); }); dataLayer.push({ event: "view_cart", ecommerce: { items: items, }, }); });
Комментарии:
1. можете ли вы показать свой html-код ?
2.
$(this).find(".cart__item--name")
Ответ №1:
$(".cart__items .cart__item").each
выполняет итерацию по всем элементам, соответствующим данному селектору, а не по дочерним элементам этого элемента. Если должно быть только одно совпадение, попробуйте взять первый элемент и перебрать его дочерние элементы?
Пример: $(".cart__items .cart__item").first().children().each
Комментарии:
1. На самом деле я хочу нацелиться на каждый div, у которого есть класс .cart__элементов внутри их родительского .cart__элементов, и зациклить их внутри массива, но он продолжает повторять только первый элемент 4 раза
Ответ №2:
Это работает для меня благодаря ответу эпаскарелло :
Все, что мне нужно было сделать, это :
$(this).find(".cart__item--name").attr("data-product-title");
Комментарии:
1. Вместо того, чтобы благодарить кого-то за ответ в качестве ответа, просто введите его в разделе комментариев