jQuery - Сбой обратного вызова, если нет параметра options - PullRequest
1 голос
/ 14 апреля 2010

Я пытаюсь создать простой плагин, подобный этому

(function($) {

        $.fn.gpSlideOut = function(options, callback) {

            // default options - these are used when no others are specified
            $.fn.gpSlideOut.defaults = {
            fadeToColour: "#ffffb3",
            fadeToColourSpeed: 500,
            slideUpSpeed: 400
            };

        // build main options before element iteration
            var o = $.extend({}, $.fn.gpSlideOut.defaults, options);

             this.each(function() {
                $(this)
                .animate({backgroundColor: o.fadeToColour},o.fadeToColourSpeed)
                .slideUp(o.SlideUpSpeed, function(){
                    if (typeof callback == 'function') {  // make sure the callback is a function
                        callback.call(this);  // brings the scope to the callback
                    }
                });

                });

            return this;

        };

        //  invoke the function we just created passing it the jQuery object
    })(jQuery);

У меня путаница в том, что обычно в плагинах jQuery вы можете вызвать что-то вроде этого:

$(this_moveable_item).gpSlideOut(function() {
                // Do stuff
            });

Без параметра options, но он пропускает обратный вызов, если я так делаю, поэтому у меня всегда должно быть

var options = {}
$(this_moveable_item).gpSlideOut(options, function() {
                    // Do stuff
                }); 

Даже если я хочу использовать только значения по умолчанию.

Есть ли в любом случае, чтобы убедиться, что вызывается функция обратного вызова, есть ли параметр options там?

Приветствие.

1 Ответ

0 голосов
/ 14 апреля 2010
//you have no second parameter
if (callback == undefined)
   ...

//have a function
if ($.isFunction(options))
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...