Я хочу создать плагин jQuery с конфигурацией (например, плагин myplugin
).
Чем вызов $(elem).myplugin(config);
После этого я хочу вызвать методы из этого плагина, например $(elem).myplugin().method()
, с уже сохраненной конфигурацией.
Мое предложение - вот что:
(function($) {
$.fn.myplugin = function(options) {
var $this = $(this);
var getOptions = function() {
return $this.data('myplugin');
};
var initOptions = function(opt) {
$this.data('myplugin', opt);
};
var setOption = function(key, value) {
$this.data('myplugin')[key] = value;
}
var updateBorderWidth = function() {
$this.css('border-width',
getOptions().borderWidth * getOptions().coeficient);
};
var init = function(opt) {
initOptions(opt);
updateBorderWidth();
}
function changeBorder(width) {
setOption('borderWidth', width)
updateBorderWidth();
}
if(options) {
init(options);
}
return {
changeBorder : changeBorder
};
}
})(jQuery);
И использование:
$(function() {
var item1 = $('#test1').myplugin({ coeficient: 1, borderWidth: 1 });
var item1 = $('#test2').myplugin({ coeficient: 2, borderWidth: 1 });
$('#btn').click(updateBorder);
});
function updateBorder() {
$('#test1').myplugin().changeBorder($('#inpt').val());
$('#test2').myplugin().changeBorder($('#inpt').val());
}
Пример: http://jsfiddle.net/inser/zQumX/4/
Мой вопрос: хорошо ли это сделать?
Может быть, это неправильный подход. Можете ли вы предложить лучшее решение?