shevchenkonik
@shevchenkonik

Как добавить новое событие на каждый элемент цикла?

Существует массив с n-количеством элементов:
var arr = ['a', 'b', 'c'];

Необходимо в один попап-блок (div) вывести по очереди каждый элемент массива, чтобы при закрытии первого, открывался второй и тд. На данный момент выводится только последний элемент, в каком направлении думать, чтобы исправить ошибку?

Всем спасибо за ответы!

var arrPop = ['a', 'b', 'c'];

function servicePopup(params) {

  function test (arg) {
    $('body').removeClass('popup_opened');
    $('body').removeAttr('style');
    $('.popup__item').css('display', 'none');
    $('.popup__item_js').find($('.popup__item__content')).html(arg);
    $('body').addClass('popup_opened');
    $('.popup__item_js').css('display', 'inline-block');
    $('.popup__item__close_js').on('click', function() {
       // код закрытия окна
    });
  }

  if (arrPop.length > 0) {
    for (i = 0; i < params.length; i++) {
      test(params[i]);
    }
  } else {
    console.log('empty');
  }
}

servicePopup(arrPop);
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 2
@S3Ga
var arrPop = ['a', 'b', 'c'];

function servicePopup(params) {

  function test (arr,index) {
    if(!arr[index]) return;
    $('body').removeClass('popup_opened');
    $('body').removeAttr('style');
    $('.popup__item').css('display', 'none');
    $('.popup__item_js').find($('.popup__item__content')).html(arr[index]);
    $('body').addClass('popup_opened');
    $('.popup__item_js').css('display', 'inline-block');
    $('.popup__item__close_js').on('click', function() {
    	test(arr,index++);
       // код закрытия окна
    });
  }

  if (arrPop.length > 0) {
      test(params,0);
  } else {
    console.log('empty');
  }
}

servicePopup(arrPop);
Ответ написан
miraage
@miraage
Старый прогер
Читайте про делегирование событий.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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