querySelector/querySelectorAll shims that enable the use of :scope
:scope, when combined with the immediate child selector >, lets you query for elements that are immediate children of a HTMLElement instance.
For instance, you might want to find all list items of an unordered list that is an immediate child of node:
var listItems = node.querySelector(':scope > ul > li');This is effectively equivalent to using jQuery's find():
var $listItems = $(node).find('> ul > li');See the Mozilla Developer Network article on :scope for more information.
Simply include the JavaScript file:
<script src="scopeQuerySelectorShim.js"></script>- Tests
:scopesupport before inserting itself, and uses it if it's available- Falls back to an ID-based
querySelectorcall against the the parent if not
- Falls back to an ID-based
- Shimmed
querySelectorAllreturns a NodeList, just like the native method - Can be called on an element that does not have an ID
- Can be called on an element that is not currently in the DOM
- Modifies
HTMLElement.prototype Document.prototype'squerySelector/querySelectorAllmethods are not shimmed:scopeis not relevant at the document level- Use
document.documentElement.querySelectorinstead without:scope
To run the tests:
npm install
grunt testscopedQuerySelectorShim is licensed under the permissive BSD license.