Как сохранить настройки в плагине jquery?

#jquery #jquery-plugins

#jquery #jquery-плагины

Вопрос:

Я новичок в написании плагинов jquery. У меня есть такой код — только для ilustrate, реальный код должен хранить много переменных.

 <input type="button" name="firstbutton" />
<input type="button" name="secondbutton" />
  

и js:

 $.fn.pluginname = function (options) {
    var opts = $.extend($.fn.pluginname.defaults, options);
    return this.each(function () {
       $.fn.pluginname.init($(this), opts);
    });
};
$.fn.pluginname.init = function (obj, opts) {
    this.sfobj = obj;
    this.sfopts = opts;
};
$.fn.pluginname.send = function () {
    //some logic to get right url, something like this
    var sendurl = this.sfopts.url;
};
  

и хотите использовать:

 //init first button
$("#firstbutton").pluginname({
  'url': "firsturl.com"
});
//init second button
$("#secondbutton").pluginname({
  'url': "secondurl.com"
});

//call when needed
$("#secondbutton").pluginname.send();
  

Проблема в том, что когда я запускаю вторую кнопку, метод init перезаписывает переменную sfopts. Как лучше всего хранить настройки инициализации плагина? И можно ли вызвать метод, подобный последней строке кода, и восстановить настройки? Спасибо

Ответ №1:

лучший и самый простой способ установить значения по умолчанию в плагине jQuery — это:

 var setting = $.extend({
    url: 'www.example.com',
    anotherSettingOption: 'another value'
}, options);
  

и когда вам нужно его вызвать, вы просто используете:

setting.url или setting.anotherSettingOption

Комментарии:

1. Спасибо, но значения по умолчанию не являются проблемой. Проблема заключается в разных настройках firstbutton и secondbutton и восстанавливает их при вызове некоторых методов плагина.