mirror of
https://codeberg.org/vlw/elevent.git
synced 2025-09-13 16:23:40 +02:00
Replace HTMLCollection
with NodeList
(#1)
I had some weird notion that `querySelectorAll` would return an `HTMLCollection` and not a `NodeList`. ```js [...document.querySelectorAll()].forEach(element => {}); ``` > Maybe I was doing this for no reason before, since `NodeList` already inherits the Array `forEach()` method... Reviewed-on: https://codeberg.org/vlw/elevent/pulls/1 Co-authored-by: Victor Westerlund <victor.vesterlund@gmail.com> Co-committed-by: Victor Westerlund <victor.vesterlund@gmail.com>
This commit is contained in:
parent
fb2b376921
commit
68116c3b09
2 changed files with 10 additions and 10 deletions
|
@ -10,7 +10,7 @@ new Elevent("click", document.querySelector("#myButton"), () => console.log("But
|
|||
|
||||
# Examples
|
||||
|
||||
## Bind from an HTMLCollection
|
||||
## Bind from a NodeList
|
||||
```js
|
||||
new Elevent("click", document.querySelectorAll("button"), (event) => console.log(event)); // console: PointerEvent
|
||||
```
|
||||
|
@ -43,7 +43,7 @@ elevent.bind(document.querySelector("#bindMe"));
|
|||
```ts
|
||||
Elevent.constructor(
|
||||
eventType: string | null
|
||||
target: HTMLCollection | HTMLElement | string | null,
|
||||
target: NodeList | HTMLElement | string | null,
|
||||
callback: CallableFunction
|
||||
)
|
||||
```
|
||||
|
|
|
@ -10,7 +10,7 @@ export class Elevent {
|
|||
/**
|
||||
* Create a new Elevent instance.
|
||||
* @param {string|null} eventType
|
||||
* @param {HTMLCollection|HTMLElement|string|null} target Strings will be treated as CSS selectors, null will create a template instance
|
||||
* @param {NodeList|HTMLElement|string|null} target Strings will be treated as CSS selectors, null will create a template instance
|
||||
* @param {function} callback
|
||||
*/
|
||||
constructor(eventType = null, target = null, callback) {
|
||||
|
@ -19,13 +19,13 @@ export class Elevent {
|
|||
|
||||
if (target) {
|
||||
switch (target.constructor) {
|
||||
case HTMLCollection:
|
||||
this.#bindHTMLCollection(target);
|
||||
case NodeList:
|
||||
this.#bindNodeList(target);
|
||||
break;
|
||||
|
||||
case String:
|
||||
this._selector = target;
|
||||
this.#bindHTMLCollection(document.querySelectorAll(target));
|
||||
this.#bindNodeList(document.querySelectorAll(target));
|
||||
|
||||
// Automatically bind new DOM elements that match the provided CSS selector string
|
||||
this._observer.observe(document.body, {
|
||||
|
@ -57,11 +57,11 @@ export class Elevent {
|
|||
}
|
||||
|
||||
/**
|
||||
* Bind all HTMLElements inside an HTMLCollection
|
||||
* @param {HTMLCollection} collection
|
||||
* Bind all HTMLElements inside a NodeList
|
||||
* @param {NodeList} nodeList
|
||||
*/
|
||||
#bindHTMLCollection(collection) {
|
||||
[...collection].forEach(element => this.bind(element));
|
||||
#bindNodeList(nodeList) {
|
||||
nodeList.forEach(element => this.bind(element));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue