kon-rafikov
@kon-rafikov
Не забывайте отмечать решение

Сравнение value у option с data-атрибутом у элемента. Что я делаю не так?

Нужно показывать прайс для выбранной модели.
Если value у .price-selector_option равно data-select у .price-selector_item, вешаем на .price-selector_item модификатор .price-selector_item--selected. Но вместо этого скрипт вешает его на все .price-selector_item. Помогите сделать правильно.

$('.price-selector_option:selected').each(function() {
	if($('.price-selector_item').attr('data-select') == $('.price-selector_option:selected').val()) {
		$('.price-selector_item').addClass('price-selector_item--selected');
	}
});


<div class="price-selector">
	<select class="select-input">
		<option class="price-selector_option" value="1">
			iPhone 4
		</option>
		<option class="price-selector_option" value="2">
			iPhone 4s
		</option>
		<option class="price-selector_option" value="3">
			iPhone 5
		</option>
	</select>
	
	<section class="select-result">	  
		<table class="price-selector_item" data-select="1">
		тут прайс
		</table>
		<table class="price-selector_item" data-select="2">
		тут прайс
		</table>
		<table class="price-selector_item" data-select="3">
		тут прайс
		</table>
	</section>
</div>
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Так у вас в третьей строке
$('.price-selector_item').addClass('price-selector_item--selected');
В переводе на русский:
Найти все элементы с классом "price-selector_item" и добавить им класс "price-selector_item--selected"

Возможно вам подойдет такой вариант:
$('select').on('change', function(){
    var val = $(this).val()
    $('.price-selector_item[data-select='+val+']').show()
        .siblings().hide()
})
Вместо show и hide можете использовать addClass() / removeClass()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы