24.2.1 • Published 1 year ago

spect v24.2.1

Weekly downloads
258
License
MIT
Repository
github
Last release
1 year ago

spect   

Observe selectors in DOM.

spect( container=document, selector, handler? )

Observes selector in container, invokes handler any time matching elements appear or disappear. Handler can return a teardown function, called for unmatched elements. Returns live collection of elements.

import spect from 'spect';

// assign aspect
const foos = spect('.foo', el => {
  console.log('connected');
  return () => console.log('disconnected');
});

// modify DOM
const foo = document.createElement('div');
foo.className = 'foo';
document.body.append(foo);
// ... "connected"

foo.remove();
// ... "disconnected"

spect(element[s], handler)

Listens for connected/disconnected events for the list of elements. (alternative to fast-on-load)

let nodes = [...document.querySelectorAll('.foo'), document.createElement('div')];

// assign listener
spect(nodes, el => {
  console.log("connected");
  return () => console.log("disconnected");
});

// modify DOM
document.body.appendChild(nodes.at(-1))
// ... "connected"

nodes.at(-1).remove()
// ... "disconnected"

spect`selector`

Creates live collection of elements matching the selector. Collection extends Array and implements Set / HTMLColection interfaces.

const foos = spect`.foo`;

// live collection
foos[idx], foos.at(idx)                       // Array
foos.has(el), foos.add(el), foos.delete(el)   // Set
foos.item(idx), foos.namedItem(elementId)     // HTMLCollection
foos.dispose()                                // destroy selector observer / unsubscribe

Technique

It combines selector parts indexing from selector-observer for simple queries and animation events from insertionQuery for complex selectors.

Simple selector is id/name/class/tag followed by classes or attrs.

  • #a, .x.y, [name="e"].x, *, a-b-c:x - simple selectors.
  • a b, #b .c - complex selectors.

Alternatives

insertionQuery, selector-observer, qso, qsa-observer, element-observer, livequery, selector-listener, mutation-summary, fast-on-load, selector-set, rkusa/selector-observer.

24.2.1

1 year ago

24.2.0

1 year ago

24.1.4

2 years ago

24.1.3

2 years ago

24.1.2

2 years ago

24.1.1

2 years ago

24.1.0

2 years ago

24.0.0

2 years ago

23.1.1

2 years ago

23.1.0

3 years ago

23.0.0

3 years ago

23.0.2

3 years ago

23.0.1

3 years ago

22.0.2

4 years ago

22.0.1

4 years ago

22.0.0

4 years ago

21.4.1

4 years ago

21.4.0

4 years ago

21.2.3

4 years ago

21.3.1

4 years ago

21.3.0

4 years ago

21.3.2

4 years ago

21.2.2

4 years ago

21.2.1

4 years ago

21.2.0

4 years ago

21.1.1

4 years ago

21.1.2

4 years ago

21.1.0

4 years ago

21.0.2

4 years ago

21.0.1

4 years ago

21.0.0

4 years ago

20.0.0

4 years ago

19.1.0

4 years ago

19.0.0

4 years ago

18.0.0

4 years ago

17.0.0

4 years ago

16.1.2

4 years ago

16.1.1

4 years ago

16.1.0

4 years ago

16.0.0

4 years ago

15.1.1

4 years ago

15.1.0

4 years ago

15.0.0

4 years ago

15.0.1

4 years ago

14.2.3

4 years ago

14.2.2

4 years ago

14.2.1

4 years ago

14.2.0

4 years ago

14.1.1

4 years ago

14.1.0

4 years ago

14.0.3

4 years ago

14.0.2

4 years ago

14.0.1

4 years ago

14.0.0

4 years ago

13.0.2

4 years ago

13.0.1

4 years ago

13.0.0

4 years ago

12.1.0

4 years ago

12.0.0

4 years ago

12.0.1

4 years ago

11.2.2

4 years ago

11.2.1

4 years ago

11.2.0

4 years ago

11.1.1

4 years ago

11.1.0

4 years ago

11.0.0

4 years ago

10.0.4

4 years ago

10.0.3

4 years ago

10.0.2

5 years ago

10.0.1

5 years ago

10.0.0

5 years ago

8.0.0

5 years ago

7.0.2

5 years ago

7.0.1

5 years ago

7.0.0

5 years ago

6.2.0

5 years ago

6.1.0

5 years ago

6.0.0

5 years ago

5.0.0

5 years ago

4.1.1

5 years ago

4.1.0

5 years ago

4.0.5

5 years ago

4.0.3

5 years ago

4.0.2

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago

0.0.1

5 years ago

0.0.0

5 years ago

1.0.0

5 years ago