@Vlad_beg

Как вернуть значение из цикла each?

Имеется несколько дивов с классом .image-portfolio у каждого класса есть data-section с определенным значением и нужно опеределить, по какому значению была нажата кнопка, и вернуть это значение из функции. Не удается получить.
$(".image-portfolio").click(function(){
		$(this).each(function(){
			var sect = $(this).attr("data-section");
    window.location = "portfolio.html";
		});
	});
	alert(sect);
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Т.к. кликнут ещё неизвестно, когда, а код срабатывает сразу при загрузке страницы, не обойтись без асинхронности и отлова событий. По клику сработает одна функция, которая получит значение data-атрибута кликнутого элемента. И, чтобы усложнить всё, запустит ещё одно событие – на этот раз глобального объекта window, который «видно» из любого участка кода. И уже событие на window можно слушать где угодно, и получить значение из data кликнутого элемента.
$(".image-portfolio").on( 'click', function(){
	window.dispatchEvent(
		new CustomEvent( 'sect', { detail: $(this).data("section")} )
	);
});

// где-то далеко далеко ловим данные из события
window.addEventListener('sect', function(e) {
	$('body').append('<div>кликнули на ' + e.detail + '</div>');
});

попробовать

На деле достаточно правильно распорядиться полученным значением сразу в первой части кода. Просто захотелось вспомнить, как «бросать» собственные события.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
$(".image-portfolio").click(function(){
      var sect = $(this).data("section");
      alert(sect);
  });
Ответ написан
Ваш ответ на вопрос

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

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