#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 и восстанавливает их при вызове некоторых методов плагина.