Я видел множество вопросов по этому поводу, которые дают аналогичные ответы, а именно:
Однако, если следовать их подходам, это ничего не дает мне?
$(function() {
$('.blogFilter__form').on('change', function(){
// location.href = $(this).val();
console.log($(this).val());
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="blogFilter__form">
<select class="blogFilter__select">
<option class="blogFilter__option" value="">Topics</option>
<option class="blogFilter__option" value="/topics/how-to/">How to</option>
<option class="blogFilter__option" value="/topics/news/">News</option>
</select>
</form>
Я пытаюсь перенаправить пользователя на основе выбранного значения option
.
В настоящее время запуск console.log($(this).val());
ничего не регистрирует для меня?
Вы пробовали $('.blogFilter__select')
вместо $('.blogFilter__form')
— person Freddy schedule 15.06.2021
Это потому, что у вас есть прослушиватель событий изменения в самой форме, а не в выборе. Если вы измените функцию для прослушивания изменяемого
.blogFilter__select
, она должна работать:Раньше вы регистрировали «значение» формы, которая пуста, а не значение выбора.
Еще один момент, несколько не связанный с этим. Вероятно, вам следует использовать идентификатор вместо класса для этого типа функции. Причина, по которой я говорю это, заключается в том, что если у вас есть несколько вариантов выбора в одной и той же форме. Вы можете использовать
class="blogFilter__select"
для их стилизации, но если вы хотите прослушать подобное изменение, оно может вести себя не так, как вы предполагали.Я также добавил дополнительный способ регистрации значения выбора при изменении формы, если это то, что вы хотели. (Хотя он закомментирован, поэтому раскомментируйте его и поэкспериментируйте с ним, если хотите его использовать)
Если вы зарегистрируете $this, вы увидите, что это форма blogfilter__, которая не имеет значения. Вместо этого используйте событие, чтобы получить целевое значение.