select-dom
Advanced tools
Comparing version 3.1.0 to 4.0.0
34
index.js
'use strict'; | ||
function getElementsArray (elements) { | ||
if (!elements) { | ||
return []; | ||
} | ||
// some elements are array-like (<form> has a .length) so they need to be stopped here | ||
if (elements instanceof HTMLElement || elements === document) { | ||
return [elements]; | ||
} | ||
if (elements.forEach) { | ||
return elements; | ||
} | ||
if (Array.from) { | ||
return Array.from(elements); | ||
} | ||
return Array.prototype.slice.call(elements); | ||
} | ||
module.exports = function (selector, parent) { | ||
@@ -25,12 +8,13 @@ return (parent || document).querySelector(selector); | ||
module.exports.all = function (selector, parent) { | ||
var current, i, l, ii, ll; | ||
if (!parent) { | ||
return getElementsArray(document.querySelectorAll(selector)); | ||
// select.all('selector') or select.all('selector', singleElementOrDocument) | ||
if (!parent || typeof parent.querySelectorAll === 'function') { | ||
return Array.apply(null, (parent || document).querySelectorAll(selector)); | ||
} | ||
parent = getElementsArray(parent || document); | ||
var all = []; | ||
for (i = 0, l = parent.length; i < l; i++) { | ||
var current, i, ii; | ||
for (i = 0; i < parent.length; i++) { | ||
current = parent[i].querySelectorAll(selector); | ||
for (ii = 0, ll = current.length; ii < ll; ii++) { | ||
if (all.indexOf(current[ii]) === -1) { | ||
for (ii = 0; ii < current.length; ii++) { | ||
if (all.indexOf(current[ii]) < 0) { | ||
all.push(current[ii]); | ||
@@ -41,2 +25,2 @@ } | ||
return all; | ||
}; | ||
}; |
{ | ||
"name": "select-dom", | ||
"version": "3.1.0", | ||
"version": "4.0.0", | ||
"description": "DOM Selector Library", | ||
@@ -10,5 +10,5 @@ "main": "index.js", | ||
"devDependencies": { | ||
"browserify": "13.0.0", | ||
"tape": "4.5.1", | ||
"tape-run": "2.1.3" | ||
"browserify": "^14.4.0", | ||
"tape": "^4.6.3", | ||
"tape-run": "^3.0.0" | ||
}, | ||
@@ -23,3 +23,3 @@ "keywords": [ | ||
"repository": "bfred-it/select-dom", | ||
"author": "Federico Brigante <bfred-it@users.noreply.github.com> (twitter.com/bfred_it)" | ||
"author": "Federico Brigante <github@bfred.it> (bfred.it)" | ||
} |
@@ -1,9 +0,16 @@ | ||
# select-dom | ||
# select-dom [![gzipped size][badge-gzip]](#no-link) [![Travis build status][badge-travis]][link-travis] [![npm version][badge-version]][link-npm] [![npm downloads][badge-downloads]][link-npm] | ||
DOM Selector Library for IE9+ | ||
[badge-gzip]: https://badges.herokuapp.com/size/github/bfred-it/select-dom/master/dist/select-dom.min.js?gzip=true&label=gzipped%20size | ||
[badge-travis]: https://api.travis-ci.org/bfred-it/select-dom.svg | ||
[badge-version]: https://img.shields.io/npm/v/select-dom.svg | ||
[badge-downloads]: https://img.shields.io/npm/dt/select-dom.svg | ||
[link-travis]: https://travis-ci.org/bfred-it/select-dom | ||
[link-npm]: https://www.npmjs.com/package/select-dom | ||
> Lightweight `querySelector`/`All` wrapper that outputs an Array | ||
## Install | ||
```bash | ||
$ npm install select-dom --save | ||
$ npm install select-dom | ||
``` | ||
@@ -48,3 +55,6 @@ | ||
```js | ||
select.all('.foo a[href=bar]', select.all('.parents')); | ||
``` | ||
const parents = select.all('.parents'); | ||
if(checkSomething(parents)) { | ||
select.all('.foo a[href=bar]', parents); | ||
} | ||
``` |
2880
5
60
21