Пользовательское событие jQuery не запускается / перехвачено

#jquery #jquery-events

#jquery #jquery-события

Вопрос:

Я загружаю некоторые скрипты динамически следующим образом:

 //fileA.js
$('body').on('LoginWidget', function() {
    $.cachedScript('/js/min/AddressWidgets.min.js').done(function() {
        extend(AddressBookWidget, ShippingAddressWidget);
        console.log("throwing event")
        $('body').trigger('ShippingAddressWidget loaded');
    });
});
  

и затем:

 //fileB.js
$(document).ready(
        function() {
            console.log("catching event")
            $('body').on('ShippingAddressWidget loaded', function() {
                // do stuff
            });
...
  

В консоли я вижу:

 catching event
throwing event
  

Но перехватчик событий не запускается. jquery 2.1.2

Ответ №1:

Имена событий не могут содержать пробелов.

Вы должны либо использовать имя события, например

 $('body').on('ShippingAddressWidgetLoaded', function() {...
  

или пространство имен события

 $('body').on('ShippingAddressWidget.loaded', function() {...
  

СКРИПКА

Комментарии:

1. Вы правы, и отличный пример jsFiddle тоже. Однако я нигде не смог найти задокументированный допустимый набор символов имени события.