npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ftdomdelegate

v5.0.0

Published

FT's dom delegate library is a library for creating and binding to events on all target elements matching the given selector.

Downloads

50,396

Readme

ftdomdelegate

FT's dom delegate library is a component for binding to events on all target elements matching the given selector, irrespective of whether anything exists in the DOM at registration time or not. This allows developers to implement the event delegation pattern.

Usage

Check out how to include Origami components in your project to get started with ftdomdelegate.

JavaScript

To import ftdomdelegate:

import Delegate from 'ftdomdelegate';
let myDel = new Delegate(document.body);

To instantiate Delegate on the body and listen to some events:

function handleButtonClicks(event) {
  // Do some things
}

function handleTouchMove(event) {
  // Do some other things
}

document.addEventListener('DOMContentLoaded', function() {
  var delegate = new Delegate(document.body);
  delegate.on('click', 'button', handleButtonClicks);

  // Listen to all touch move
  // events that reach the body
  delegate.on('touchmove', handleTouchMove);
});

A cool trick to handle images that fail to load:

function handleImageFail() {
  this.style.display = 'none';
}

document.addEventListener('DOMContentLoaded', function() {
  var delegate = new Delegate(document.body);
  delegate.on('error', 'img', handleImageFail);
});

.on(eventType[, selector], handler[, useCapture])

eventType (string)

The event to listen for e.g. mousedown, mouseup, mouseout, error, click, etc.

selector (string)

Any kind of valid CSS selector supported by matchesSelector. Some selectors, like #id or tag will use optimized functions internally that check for straight matches between the ID or tag name of elements.

null is also accepted and will match the root element set by root(). Passing a handler function into .on's second argument is equivalent to .on(eventType, null, handler).

handler (function)

Function that will handle the specified event on elements matching the given selector. The function will receive two arguments: the native event object and the target element, in that order.

useCapture (boolean)

Whether or not to listen during the capturing (pass in true) or bubbling phase (pass in false). If no value passed in, it will fallback to a 'sensible default', which is true for error, blur and focus events and false for all other types.

.off([eventType][, selector][, handler][, useCapture])

Calling off with no arguments will remove all registered listeners, effectively resetting the instance.

eventType (string)

Remove handlers for events matching this type considering the other parameters.

selector (string)

Only remove listeners registered with the given selector, among the other arguments.

If null passed listeners registered to the root element will be removed. Passing in a function into off's second parameter is equivalent to .off(eventType, null, handler[, useCapture]) (the third parameter will be ignored).

handler (function)

Only remove listeners registered with the given handler function, among the other arguments. If not provided, remove all handlers.

useCapture (boolean)

Only remove listeners with useCapture set to the value passed in. If not provided, remove listeners added with useCapture set to true and false.

.root([element])

element (Node)

Set the delegate's root node. If no element passed in the root node will be deleted and the event listeners will be removed.

.destroy()

Short hand for off() and root(), ie both with no parameters. Used to reset the delegate object.

Credits and collaboration

FT DOM Delegate was developed by FT Labs, part of the Financial Times. It's now maintained by the Origami Team. The developers of ftdomdelegate were Matthew Andrews and Matthew Caruana Galizia. Test engineering by Sam Giles. The API is influenced by jQuery Live.

Migration guide

State | Major Version | Last Minor Release | Migration guide | :---: | :---: | :---: | :---: ✨ active | 5 | N/A | migrate to v5 | ⚠ maintained | 4 | 4.0.6 | migrate to v4 | ⚠ maintained | 3 | 3.1 | migrate to v3 | ╳ deprecated | 2 | 2.2 | N/A | ╳ deprecated | 1 | 1.0 | N/A |