miguelslp - Vanilla JS

DOM Manipulation Library with chaining methods

  • Item 1
  • Item 2
  • Item 3
<p>
<button class="btn-blue" id="button-1">Button 1</button>
<button class="btn-blue" id="button-2">Button 2</button>
<button class="btn-blue" id="button-3">Button 3</button>
</p>

<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

<script>
var $ = (function () {

var getArray = function (arr) {
return methods.Array.from(document.querySelectorAll(arr));
};

// The constructor object
var Constructor = function (selector) {
this.elems = document.querySelectorAll(selector);
};

// Get an immutable copy of the matching elements
Constructor.prototype.items = function () {
return Array.prototype.slice.call(this.elems);
};

Constructor.prototype.first = function () {
return this.elems[0];
};

Constructor.prototype.last = function () {
return this.elems[this.elems.length - 1];
};

Constructor.prototype.addClass = function (className) {
this.items().forEach(function (elem) {
elem.classList.add(className);
});
return this;
};

Constructor.prototype.removeClass = function (className) {
this.items().forEach(function (elem) {
elem.classList.remove(className);
});
return this;
};

// Return the constructor
return Constructor;

})();

// Create new instances
var btns = new $('button');
var list = new $('ul');


// $.items()
console.log('$.items()', btns.items());
console.log('$.items()', list.items());

// $.first()
console.log('$.first()', btns.first());

// $.last()
console.log('$.last()', btns.last());

// $.addClass()
btns.addClass('btn-purple');

// $.removeClass()
btns.removeClass('btn-blue');



</script>