watched

LiveNodeList watched(String selector)
DomElement watched(HTMLElement element)

Creates a LiveNodeList directly, or a decorated HTMLElement as DomElement to get lists with different queries by yourself.

Use a selector to get a LiveNodeList or an HTMLElement for complete control

var watched = require('watched');

var foos = watched('.foo'); // LiveNodeList
var foos = watched(document); // DomElement



DomElement

Wrapper for a HTMLElement, that offers different queries. All queries return the same type of LiveNodeList that's constantly updated, aka live.

querySelectorAll

LiveNodeList querySelectorAll(String selector)

Used like the native querySelectorAll.

var foos = watched(document).querySelectorAll('.foo'); // LiveNodeList

querySelector

LiveNodeList querySelector(String selector)

See querySelector for details. The returned object will always be a LiveNodeList, not a single element as in the native querySelector.

var foos = watched(document).querySelector('.foo'); // LiveNodeList

getElementsByTagName

LiveNodeList getElementsByTagName(String tagName)

See getElementsByTagName for details. Should be faster than the query selectors, as watched.js uses the native live nodelist internally to get the elements you want.

var links = watched(document).querySelector('a'); // LiveNodeList

getElementsByClassName

LiveNodeList getElementsByClassName(String className)

See getElementsByClassName for details. Should be faster than the query selectors, as watched.js uses the native live nodelist internally to get the elements you want.

var foos = watched(document).querySelector('foo'); // LiveNodeList



LiveNodeList

A live list of dom elements, always up to date.

It's a live list, similar to the list returned by getElementsBy(Tag|Class)Name. But other than these queries, the LiveNodeList dispatches event on changes!

It's an event emitter, dispatching events if the LiveNodeList changes.

Events

changed

LiveNodeList event

Event called when new elements are added to or removed from the dom

The event listeners callback will be called with one argument: an array containing all elements currently in the list

nodeList.on('changed', function(currentElements){
  console.log(currentElements);
});


added

LiveNodeList event

Event called when new elements are added to the dom

The event listeners callback will be called with one argument: an array containing the newly found dom elements

nodeList.on('added', function(newElements){
  console.log(newElements);
});


removed

LiveNodeList event

Event called when elements are removed from the dom

The event listeners callback will be called with one argument: an array removedElements containing the dom elements removed from the list (removed from the dom)

nodeList.on('removed', function(removedElements){
  console.log(removedElements);
});




length

Number length

The length of the node list.

you can't set the length, so tricks known to work with the native array won't have any effect here*

on

on(String event, Function callback)

Add an event listener to the LiveNodeList

once

once(String event, Function callback)

Add an event listener to the LiveNodeList that will only be called once

off

off(String event, [Function callback])

Removes an event listener from the LiveNodeList

emit

emit(String event, ...eventData)

Emit an event.

Normally you don't do that, but it's part of the LiveNodeList's prototype, so it's documented here

forEach

forEach(Function callback, Object thisArg)

see the native Array.forEach for details.

nodeList.forEach(function(element){
  element.style.color = "green";
});

pause

pause()

Freezes the nodelist in it's current form and pauses the dom mutation listener

resume

resume()

Resume the query and listen to dom mutations again. Creating a LiveNodeList will do that initially for you.