Задать вопрос
@fedot1325

Почему не работает .each внутри другого .each?

В общем суть такова: есть несколько вопросов, которые содержат несколько ответов. Хочу собрать из них многомерный массив и отправить на сервер. Если с вопросами всё ок работает, то ответ в массив попадает только один. Что не так?
$(document).on('click', '.save-new-form', function(e) {
		var arrNumber = [];
		var b = '0';
		var i = '0';
		$('.question-block').each(function(){
			var q = [];
			q['type'] = $(this).attr('question-type');
			q['name'] = $(this).children('.question-name').val();
			q['order'] = $(this).index();
			arrNumber[i++] = q;
			$(this).children('.question-answer').each(function(){
				var a = [];
				q['answers'] = [];
				a['name'] = $(this).val();
				a['order'] = $(this).index();
				q['answers'][++b] = a;
			})
		})
		console.log(arrNumber);
	});

<div class="question-block" question-type="2">
		<span><b>Один</b></span><br>
		<span>Введите вопрос:</span><div class="btn btn-small btn-color-red">удалить</div><br>
		<input class="question-name" type="text" placeholder="Вопрос" name="form-name"><br>
		<span>Введите Ответы:</span><br>
		<input class="question-answer" type="text" placeholder="Ответ" name="form-name"><br>
		<input class="question-answer" type="text" placeholder="Ответ" name="form-name">
	</div>
	<div class="question-block" question-type="2">
		<span><b>Один</b></span><br>
		<span>Введите вопрос:</span><div class="btn btn-small btn-color-red">удалить</div><br>
		<input class="question-name" type="text" placeholder="Вопрос" name="form-name"><br>
		<span>Введите Ответы:</span><br>
		<input class="question-answer" type="text" placeholder="Ответ" name="form-name"><br>
		<input class="question-answer" type="text" placeholder="Ответ" name="form-name">
	</div>
	...
  • Вопрос задан
  • 599 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@fedot1325 Автор вопроса
Проблему решил, странно что раньше не догадался, видимо сонно.
q['answers'] = [];
нужно переместить в each вопросов, то есть:
$(document).on('click', '.save-new-form', function(e) {
    var arrNumber = [];
    var b = '0';
    var i = '0';
    $('.question-block').each(function(){
      var q = [];
      q['answers'] = [];
      q['type'] = $(this).attr('question-type');
      q['name'] = $(this).children('.question-name').val();
      q['order'] = $(this).index();
      arrNumber[i++] = q;
      $(this).children('.question-answer').each(function(){
        var a = [];
        a['name'] = $(this).val();
        a['order'] = $(this).index();
        q['answers'][++b] = a;
      })
    })
    console.log(arrNumber);
  });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы