У меня есть файл JS, который управляет моими всплывающими окнами. Каждый раз, когда всплывающее окно открывается или закрывается, я запускаю такое пользовательское событие.
Файл №1
$(document).trigger('popinOpen', {popin: $(popinId)});
Теперь, если я хочу что-то сделать при срабатывании триггера, я могу сделать следующее.
Файл №2
$(document).on('popinOpen', function(e, popin) {
console.info(e);
console.info(popin);
});
Этот код работает, когда в том же файле, но не в отдельном файле, и я не понимаю, почему. Я пробовал перемещать второй файл до или после первого, но это ничего не меняет.
Я что-то пропустил ?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, вы запускаете действие еще до того, как начинаете его слушать. Когда вы делите свой код на 2 разных файла, вы должны убедиться, что ваш слушатель зарегистрирован первым.
Сначала включите слушателя в свой index.html, а затем в действие триггера.
Я управляю своим триггером с помощью связанного JS-файла с Webpack, а прослушивающий файл - нет. Больше похоже на проблему с масштабом.
Я принял ваш ответ, хотя моя проблема была не только в порядке файлов, но и помогла мне понять, где была «ошибка». Похоже, что Webpack и jQuery не очень дружат, когда дело доходит до переменных области видимости. Мне пришлось использовать простое решение Javascript для запуска и прослушивания моего пользовательского события, чтобы заставить его работать, поскольку (очевидно) Webpack использовал экземпляр jQuery, отличный от того, который находится в моем втором файле. Подробнее здесь: stackoverflow.com/a/46404476/7160865
Ты прав ! Я тестировал простой index.html и 2 файла Javascript, и вы должны прослушать действие, прежде чем запускать его. В моем проекте это то, что у меня есть, но это все еще не работает. Если я запускаю его вручную из консоли браузера, он работает. Это должно быть конкретно для моего проекта.