uniqueselector
Get unique selector for given element
🧭 Table of contents
✨ Benefits🎒 Requierments🚀 Quickstart📘 Documentation🆘 Troubleshooting🤝 Contributing🧪 Testing⚖️ License
✨ Benefits
- [x] Tiny size
- [x] Uses id when possible
- [x] Fallback to nth-child position
🎒 Requierments
No requierments.
🚀 Quickstart
Install
NodeJS
Install using the terminal:
npm install @danielcobo/uniqueselector
Require the module:
const uniqueselector = require('@danielcobo/uniqueselector');
Note: In case you're wondering, @danielcobo/ is just a namespace scope - an NPM feature. Scopes make it easier to name modules and improve security.
Browser
Declare it as a global variable named uniqueselector by including this script before any script you want to use it in:
<script src="https://cdn.jsdelivr.net/npm/@danielcobo/uniqueselector@1/dist/iife/uniqueselector.min.js"></script>
Or import it as an ECMAScript module:
import * as uniqueselector from 'https://cdn.jsdelivr.net/npm/@danielcobo/uniqueselector@1/dist/esm/uniqueselector.min.js';
Also, feel free to download the file if you prefer not to use jsdelivr. In that case just replace the url with the relative file path.
Example use
document.body.innerHTML = '';
const div = document.createElement('div');
div.id = 'test';
const div2 = document.createElement('div');
div2.id = 'test2';
document.body.appendChild(div);
div.appendChild(div2);
uniqueSelector(div, { id: false }) //'div:nth-child(1)'
uniqueSelector(div2) //'#test2'
For details see documentation below.
📘 Documentation
uniqueselector()
Get unique selector for element
Name | Type | Default | Description |
---|---|---|---|
$el | HTML element |
||
[options.id] | undefined |
boolean |
true |
Returns
Type | Description |
---|---|
string |
Selector |
Source: src/index.js:5
🆘 Troubleshooting
If you run into trouble or have questions just submit an issue.
🤝 Contributing
Anyone can contribute
Contributions come in many shapes and sizes. All are welcome. You can contribute by:
- asking questions
- suggesting features
- sharing this repo with friends
- improving documentation (even fixing typos counts
😉 ) - providing tutorials (if you do, please let me know, I would love to read them)
- improving tests
- contributing code (new features, performance boosts, code readability improvements..)
Rules for contributions
General guidelines:
- there are no dumb questions
- be polite and respectful to others
- do good
When coding remember:
- working > maintainability > performance
- best code is no code
- be descriptive when naming
- keep it DRY
- do test
Contribution licence: All contributions are considered to be under same license as this repository.
🧪 Testing
Testing suite: npm test
Mutation testing suite: npm run mutation
If you intend to develop further or contribute code, then please ensure to write and use testing. Strive for 100% code coverage and high mutation scores. Mutation score 100 is great, but it's not always neccessary (if there are valid reasons).