Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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?
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2015, 09:44
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Я честно говоря не особо в курсе jq-событий, но помоему надо делать что то вроде этого
/** ловим событие **/
$(document).on("myEvt",function(){...})

/** инициируем событие **/
$(document).trigger("myEvt")


И вообще загугли custom event jquery
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить размер всех видео (iframe) разом через jQuery? dhorh Элементы интерфейса 2 29.12.2012 17:41
Как подключить JQUery при разработке расширения для OPERA? Romingood jQuery 1 24.10.2012 10:25
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 10:46
Плагин jQuery form. Добавляю форму js'ом Physicist jQuery 3 21.07.2011 16:46
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 13:40