запуск события изменения в jquery, странное поведение

#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 оба имеют события изменения.