Как слушать события за пределами моего плагина jquery? - PullRequest
0 голосов
/ 05 августа 2011

Мой плагин занимает некоторое время, делая что-то. Поэтому я хочу послушать, когда плагин завершит свою задачу извне, чтобы я мог что-то отобразить.

Я хочу что-то подобное -

 $('li').filterGroup ({

        onInit: function(){
          alert("plugin has started working");
        },

        onComplete: function(){

          alert("plugin has finished");
        }
    })

Я пытался написать это внутри кода моего плагина -

(function($) {
    // jQuery plugin definition

    $.fn.filterGroup = function(config) 
    {

        var settings = {
                    //some settings defined here
                        };




            var thisDropdown = this; //master  copy

        if(config)
        {
            $.extend(settings, config);
        }

            /*Tried following changes to make events work*/
            /*Tried following changes to make events work*/
            /*Tried following changes to make events work*/
            //I tried the following – assuming I will be able to listen to an onComplete event from outside

        // reference the function from the options passed
            var theFunc = config.onInit;
            var anotherFunc = config.onComplete;
            theFunc.call(); //does not work - gives error "theFunc is not a function"

        this.each(function() 
        {      
                    //here my plugin logic is done
            anotherFunc.call(); //this is also not working - "anotherFunc is not a function"
        });

        // allow jQuery chaining
        return thisDropdown;
    };

Но это не работает, я получаю сообщение об ошибке -

theFunc is not a function

Примечание - Я проверил документы для разработки PLugins и, в частности, раздел событий http://docs.jquery.com/Plugins/Authoring#Events,, но похоже, что он предназначен для определения открытых функций, которые можно вызывать извне, а не того, что я ищу за. Где оригинальный документ JQuery для этого? Я думаю, что мне просто нужно правильно следовать документам.

Также проверил следующие вопросы, но не получил -
Привязать событие к пользовательской функции плагина в jQuery
Пользовательское событие для пользовательского плагина JQuery
Обработка событий в плагине jQuery

Обновление

Хорошо, получил мою ошибку, в моем действительном коде у меня были theFunc.call() и anotherFunc.call(), но в вызывающей части я только обработал onComplete. Итак, мне нужно явно написать часть onInit () в моем вызове плагина -

Эта часть -

onInit: function(){
              alert("plugin has started working");
            }

Я имею в виду, если события определены внутри плагина, что если я не хочу обрабатывать внешний код?

1 Ответ

1 голос
/ 05 августа 2011

Странно. Меня устраивает. http://jsfiddle.net/LHzjG/

Кстати, вы также можете вызывать обратные вызовы напрямую, используя config.onComplete() и ставить параметры, если хотите. И вы можете использовать jQuery.isFunction(), чтобы заранее проверить, является ли это функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...