Показать сообщение отдельно
  #1 (permalink)  
Старый 27.08.2015, 13:53
Аспирант
Отправить личное сообщение для maxapet Посмотреть профиль Найти все сообщения от maxapet
 
Регистрация: 27.08.2015
Сообщений: 43

Плагин jQuery - как сгенерить событие?
Попробовал написать свой плагин. Нашёл кучу ссылок, но в основном это перевод одной и той же статьи, например вот это: Как написать плагин на jQuery.
Написал, как рекомендовано. А именно, загнал все методы плагина в объект methods, в том числе и метод init.
И столкнулся с такой проблемой: после инициализации плагина мне необходимо сгенерить событие initialized. Самое подходящее место для этого - перед завершением метода init. Но почему-то триггер не срабатывает в методе init.
Вот код:
(function ($) {
    var defaults = {
// настройки по умолчанию для всех копий плаина

    var methods = {
        init: function (options) {
            // актуальные настройки, будут индивидуальными при каждом запуске
            settings = $.extend({}, defaults, options); // settings - локальная, т.к. для каждого экземпляра должны быть свои настройки
 /*
настройка 
*/
            alert($(this).attr('id')); // возвращает id объекта, к которому цепляется плагин
            $(this).trigger('carousel.load'); // метод, привязанный через bind, не вызывается.

            return this;
        },
/*
другие методы
*/
    };
// единственная публичная функция плагина
    function doSlide(dir) {
/*
некоторые действия
*/
        alert($(this).attr('id')); // возвращает пустую строку 
        $(this).trigger('carousel.drawComplete'); // нормально генерится событие
        return this; 
    }

// главная функция плагина
    $.fn.carousel = function(method) {
        settings = null;
        // обеспечиваем внешний вызов методов плагина
        // логика вызова метода
        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Метод с именем ' + method + ' не существует для jQuery.carousel');
        }
        return this;
    };
})(jQuery);

В чём может быть дело? Как сгенерить событие из метода, входящего в свойство methods?
Ответить с цитированием