Fast JS utility library for creating event loops (with basic DOM manipulation).
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Fast JS utility library for creating event loops (with basic DOM manipulation).

Maintained as part of Studio Universe's in-house toolkit. If you need help with CSS and styling pages, please checkout Classic.


Find a single element (this should be cached in a variable):

let $el = $("a.submit");

Find a child element:


Add a click event:

$("a.submit").on("click", function() {
  // Do something

Chain methods:

  .on("click", function() {
    // Do something

Create a new element:

let $span = $("<span>");

Append a new child element:


Hide an element:

[hidden] { display: none !important; }


Change an attribute:

$([""]).attr("href", "/contact");

Change a class:


Find multiple elements by wrapping selectors in an array:

let $anchors = $(["a"]);
let $messages = $([".error", ".warning"]);

Manipulate multiple elements:

let $clickers = $(["a", "button"]);
$anchors.forEach(function(el) { el.hide() });
$anchors.attr("data-test", "123");
$anchors.on("mouseenter touchstart", eventHandler);
$"mouseenter touchstart", eventHandler);

Add your own single element method:

$._.myFunction = function(stuff) {
  this.attr("data-stuff", stuff);

Add your own multiple element method:

$.__.myFunction = function(stuff) {
  this.forEach(function(el) {
    el.attr("data-stuff", stuff);
  return this;

Log shortcut:

$.log("Something happened", eventData);

Log an error:

$.error("Something went wrong");

Get something from your REST API (XHR):


Post something to your REST API (XHR):

$.send("", { firstName: 'John' }, { method: 'POST' })

Go to new URL (in a new tab by default):

$.go("", false);

Create a repeating event:

var updateID = $.addUpdate({
                  interval: 1000, // ms
                  update: function() {

Create a repeating on-scroll event:

var updateID = $.addUpdate({
                  updateOnScroll: true,
                  update: function() {

Access useful variables:

$.start; // Time Hermes was loaded
$.elapsed; // How long on page
$.scrollY; // Window scroll Y position