Показать сообщение отдельно
  #1 (permalink)  
Старый 20.05.2018, 19:13
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Создание ссылок из выпадающего списка
Добрый день уважаемый. Столкнулся с такой задачей => На мобильных устройствах для сайта необходимо реализовать сортировку товара, и что б оно выглядела как множество кнопочек. Поскольку как таковая сортировка уже есть через select (для десктоп версии) мною было принято решение сделать отдельное попап поле в которое по нажатию на кнопку одноразово будут формироваться ссылки с адресами из этого select .
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
	<style>
	.btn_sorted__mobile {
		border: 1px solid #000;
		padding: 5px;
	}
	.bl_sortField{
		width: 300px;
		min-height: 300px;
		border: 1px solid #f00;
	}
	.test{
		display: block;
		margin-bottom: 5px;
		color: #f00;
	}
</style>
</head>


<body>
	<button class="btn_sorted__mobile" type="button">Сортировать</button>

	<div class="bl_sorter">
		<select class="bl_sorter__select js-mainSorter" onchange="location = this.value;">
			<option value="http://test1">По популярности</option>
			<option value="http://test2">Название (А - Я)</option>
			<option value="http://test3">Название (Я - А)</option>
			<option value="http://test4">Сначала подешевле</option>
			<option value="http://test5">Сначала подороже</option>
		</select>
	</div>
	<div class="bl_sortField"></div>
	<script>
		window.onload = function () {

			var btnSorted = $(".btn_sorted__mobile"),
			blockSortField = $(".bl_sortField");

			btnSorted.one('click', function(){
				var numberOfSelect = $(".js-mainSorter option").length;
				var sorterSelectVal =  $(".js-mainSorter option").each(function(){$(this).val()});
				var sorterSelectText = $(".js-mainSorter option").each(function(){$(this).text()});


				for(var i = 0; i < numberOfSelect; i++){
					blockSortField.append('<a class="test" href=" ' + sorterSelectVal.eq(i) +' " >' + sorterSelectText.eq(i) + '</a>')
				}

				console.log("numberOfSelect =" + numberOfSelect);
				console.log( "sorterSelectVal =" + sorterSelectVal );
				console.log( "sorterSelectText =" + sorterSelectText );

			});
		}
	</script>
</body>
</html>

Попробовал реализовать, но что-то пошло не так. Не могу понять почему мне сыпятся объекты а не их значения? Подскажите как исправить ?
Ответить с цитированием