Хорошо, как упоминалось в комментариях, вы не можете и не должны вызывать событие перед созданием списка.
НО, вот быстрое хакерское решение, которое я собрал (потому что почему бы не ¯\ _ (ツ) _ / ¯)
Рабочий пример: https://jsfiddle.net/9mj86r5e/
Добавьте приведенный ниже код и замените $button.trigger("init")
на $button._trigger("init")
/**
* Create a callable trigger alternative
* @param {String} name
* @param {Mixed} ...params Addition paramaters to send with event
*/
$.fn._trigger = function(name, ...params) {
var $el = this;
// Keep looping every 100ms until the event listner is found
$el.myEventFinder = setInterval(function() {
// Get an object of attached event listeners
var events = $._data($el.get(0), 'events');
// Has the event been found?
if (events[name]) {
// Stop the eventFinder loop
clearInterval($el.myEventFinder);
// Trigger event
$el.trigger(name, ...params);
}
}, 100);
};
Ps, пожалуйста, не используйте этот код. То, что это выполнимо, не означает, что это должно быть сделано.