Цель: нажмите кнопку, и ингредиенты будут добавлены в массив как отдельные элементы.
Текущая настройка:
<% currentUser.ingredients.forEach(function(items){ %>
<p class='ingredients'> <%= items %> </p>
<% }) %>
Это дает: Черника Манго Лимонный сок
Затем я хотел бы иметь возможность добавлять ингредиенты в виде отдельных элементов в массив, нажав кнопку:
var allIngredients = []
$("#makeList").click(function() {
allIngredients.push($(".ingredients").text())
console.info(allIngredients)
});
Это печатает ["Черника, манго, лимонный сок"]
Проблема в том, что это все один элемент, а не отдельные элементы.
Что мне нужно изменить, чтобы сделать их отдельными элементами?
allIngredients.concat($(".ingredients")) // предполагается, что $ingredients возвращает массив



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно повторить $('.ingredients')
var allIngredients = [];
$("#makeList").click(function() {
$(".ingredients").each(function() {
allIngredients.push($(this).text());
});
console.info(allIngredients);
});
Ты герой. Спасибо!
Вы опередили меня на несколько минут :) Но это не даст желаемого результата для многословных значений.
Простое разделение или цикл по текстовым узлам не даст ожидаемого результата, если значение может состоять из нескольких слов. Для надежного решения окружите отображаемые значения некоторым тегом html.
<% currentUser.ingredients.forEach(function(items){ %>
<p class='ingredients'> <span class = "ingredient"><%= items %></span> </p>
<% }) %>
var allIngredients = []
$("#makeList").click(function() {
$(".ingredients").find('.ingredient').each(function() {
allIngredients.push($(this).text());
});
console.info(allIngredients)
});
попробуйте добавить с помощью .split()