jQuery плагин с общей переменной во всех случаях? - PullRequest
0 голосов
/ 30 апреля 2020

Начиная с этого jQuery шаблона шаблона плагина , как я могу определить глобальные переменные, которые являются общими для всех экземпляров плагина? Например, если значение изменяется в одном экземпляре, значение будет одинаковым во всех остальных случаях?

Идея состоит в том, чтобы написать плагин с возможностью перетаскивания, позволяющий пользователю перетаскивать элементы из одного плагина. экземпляр другому. Чтобы реализовать это, я хотел бы использовать разделяемую переменную, например, «перетаскивание», к которой я затем могу обращаться в обработчике при наведении курсора в каждом случае, наряду с разделяемой переменной «items», содержащей узлы DOM элементов, которые в данный момент перетаскиваются.

Как я могу реализовать это в jQuery плагине?

1 Ответ

0 голосов
/ 01 мая 2020

Способ, которым я в конце концов решил эту проблему, заключался в добавлении переменных к прототипу «класса». Смотрите обновленный шаблон шаблона ниже с добавленными комментариями.

// jQuery Plugin Boilerplate
// A boilerplate for jumpstarting jQuery plugins development
// by Stefan Gabos

(function ($) {

    $.pluginName = function (element, options) {

        var defaults = {
            foo: 'bar',
            onFoo: function () { }
        }

        var plugin = this;
        plugin.settings = {}

        var $element = $(element),
            element = element;

        plugin.init = function () {
            plugin.settings = $.extend({}, defaults, options);

            // Example event handler
            $element.on('mouseenter', function (e) {

                // Get value of shared variable
                console.log($.pluginName.prototype.mySharedVar);

                // Set value of shared variable
                $.pluginName.prototype.mySharedVar = 'new value';
            });
        }

        plugin.foo_public_method = function () {
        }

        var foo_private_method = function () {
        }

        plugin.init();
    }

    // Shared variable declarations go here
    $.pluginName.prototype.mySharedVar = 'initial value';

    $.fn.pluginName = function (options) {
        return this.each(function () {
            if (undefined == $(this).data('pluginName')) {
                var plugin = new $.pluginName(this, options);
                $(this).data('pluginName', plugin);
            }
        });
    }
})(jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...