Плагин 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? |
Я честно говоря не особо в курсе jq-событий, но помоему надо делать что то вроде этого
/** ловим событие **/ $(document).on("myEvt",function(){...}) /** инициируем событие **/ $(document).trigger("myEvt") И вообще загугли custom event jquery |
Часовой пояс GMT +3, время: 11:25. |