#jquery #events
#jquery #Мероприятия
Вопрос:
Мне нужно программно запустить событие изменения. Обычно я могу это сделать, но я нашел необъяснимый сценарий, с которым, я надеюсь, вы сможете мне помочь. У меня есть этот код:
jQuery(document).ready(function() {
jQuery('.posts-list').hide();
jQuery('.clinic').hide();
jQuery('#category').change(function() {
jQuery('.posts-list').hide();
jQuery('#clinics-' jQuery(this).val()).show().change();
});
jQuery('.posts-list').change(function() {
jQuery('.clinic').hide();
jQuery('#clinic-' jQuery(this).val()).show();
});
jQuery('#category').change();
});
Важной частью этого кода является предпоследняя строка и функция, которая была привязана к событию изменения #category. Запуск события изменения внутри этого события действительно работает. Но запуск события изменения в предпоследней строке этого не делает. Однако, если я помещу это в консоль, первое, что я сделаю после загрузки страницы, это сработает.
У кого-нибудь есть объяснение?
Ответ №1:
jQuery('#category').trigger('change');
На самом деле вы хотите запустить событие, а не функцию. Дайте мне знать, если это поможет.
Комментарии:
1. Это работает! Что отличает trigger(‘change’) от simply .change(), вы знаете?
2. Я вижу, что документация заставляет нас полагать, что они одинаковы… но у меня никогда не было такого опыта.
3. Это очень странно. Документация, похоже, подразумевает, что это просто псевдоним.
4. Возможно, это из-за зависимых событий, где .post-lists и #category оба имеют события изменения.