Плагин JQuery: как выставить открытый метод, привязанный к экземплярам - PullRequest
1 голос
/ 10 марта 2012

С небольшими трудностями. Попытка выставить открытый метод stop () внутри плагина. На странице может быть запущено несколько экземпляров плагина. Я хочу иметь возможность сделать следующее:

var slider = $('#slider1').myslider();
// later
slider.stop();

У меня есть следующее:

; (function ($) {

    $.fn.myslider = function (options) {
        var defaults = {
            interval: 2000
        };
        var o = jQuery.extend(defaults, options);

        return this.each(function () {

            var slider = $(this);

            var timer;
            var active;

            var rotateSwitch = function () {
                timer = setInterval(function () {
                    active = $('.slider_active', slider).next();
                    if (active.length === 0) {
                        active = $('.slider_paging a:first', slider);
                    }
                    rotate();
                }, o.interval);
            };

            rotateSwitch();
            ...
        });

    };
})(jQuery);

Как предоставить метод stop (), который я могу вызвать для конкретного экземпляра?

1 Ответ

0 голосов
/ 10 марта 2012

Обычный способ состоит в том, чтобы ваша подключаемая функция принимала командную строку, например ::10000

$(selector).slider("stop");

Это то, что делают, например, различные плагины jQuery UI. Таким образом, вы измените свою функцию, чтобы проверить, получен ли ей объект параметров (ваш текущий код) или командную строку, и действовать соответствующим образом.

В вашем конкретном случае вам нужно сохранить значение таймера для рассматриваемых элементов, возможно, используя функцию data.

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