Добрый день.
Есть метод который, который принимает html елемент или елементы и работает с ними(плагин). Проблема состоит в реализации инициализации плагина.
Небольшой примерчик
(function() {
function Test(el) {
this.el = el;
this.init();
}
Test.prototype.init() {
// работает с this.el
}
Test.prototype.destroy() {
// this.el = null
}
window.Test = Test;
})();
var obj = new Test(document.querySelector('div'));
// если нужно
obj.destroy();
А если скажем елементов не один, а много, то хотелось бы создавать экземпляр класса внутри цикла, например
(function() {
function _(el) {
this.el = el;
this.init();
}
_.prototype.init() {
// работает с this.el
}
_.prototype.destroy() {
// this.el = null
}
function Test(selectors, method) {
var el = document.querySelectorAll(selectors);
[].forEach.call(el, function(element) {
// *1
var obj = new _(element);
});
}
window.Test = Test;
})();
Test('div');
*1) Надо проверить не был ли обьект уже инициализирован, в jQuery есть метода $.data, в который можно сохранить весь обьект, и если например передан метод destroy, то запустить на обьекте destroy. А как быть в случае без jquery.
Хотелось бы, чтобы сам плагин работал с одним элементом, а если элементов много то вызывался в цикле. Может есть более удачные варианты организации плагина, заранее спасибо за любые советы в этом направлении.