Инициировать пользовательское событие JS из отдельного файла

У меня есть файл JS, который управляет моими всплывающими окнами. Каждый раз, когда всплывающее окно открывается или закрывается, я запускаю такое пользовательское событие.

Файл №1

$(document).trigger('popinOpen', {popin: $(popinId)});

Теперь, если я хочу что-то сделать при срабатывании триггера, я могу сделать следующее.

Файл №2

$(document).on('popinOpen', function(e, popin) {
  console.info(e);
  console.info(popin);
});

Этот код работает, когда в том же файле, но не в отдельном файле, и я не понимаю, почему. Я пробовал перемещать второй файл до или после первого, но это ничего не меняет.

Я что-то пропустил ?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы запускаете действие еще до того, как начинаете его слушать. Когда вы делите свой код на 2 разных файла, вы должны убедиться, что ваш слушатель зарегистрирован первым.

Сначала включите слушателя в свой index.html, а затем в действие триггера.

Ты прав ! Я тестировал простой index.html и 2 файла Javascript, и вы должны прослушать действие, прежде чем запускать его. В моем проекте это то, что у меня есть, но это все еще не работает. Если я запускаю его вручную из консоли браузера, он работает. Это должно быть конкретно для моего проекта.

Corentin Le Fur 17.07.2019 14:21

Я управляю своим триггером с помощью связанного JS-файла с Webpack, а прослушивающий файл - нет. Больше похоже на проблему с масштабом.

Corentin Le Fur 17.07.2019 14:31

Я принял ваш ответ, хотя моя проблема была не только в порядке файлов, но и помогла мне понять, где была «ошибка». Похоже, что Webpack и jQuery не очень дружат, когда дело доходит до переменных области видимости. Мне пришлось использовать простое решение Javascript для запуска и прослушивания моего пользовательского события, чтобы заставить его работать, поскольку (очевидно) Webpack использовал экземпляр jQuery, отличный от того, который находится в моем втором файле. Подробнее здесь: stackoverflow.com/a/46404476/7160865

Corentin Le Fur 17.07.2019 15:12

Другие вопросы по теме