diff --git a/src/query/matches.js b/src/query/matches.js index 37aad94..3b8fc3f 100644 --- a/src/query/matches.js +++ b/src/query/matches.js @@ -2,21 +2,26 @@ import canUseDOM from '../util/inDOM' import qsa from './querySelectorAll' -let matches; -if (canUseDOM) { - let body = document.body - let nativeMatch = body.matches - || body.matchesSelector - || body.webkitMatchesSelector - || body.mozMatchesSelector - || body.msMatchesSelector; - - matches = nativeMatch - ? (node, selector) => nativeMatch.call(node, selector) - : ie8MatchesSelector -} +let matchesCache; + +export default function matches(node, selector) { + if (!matchesCache && canUseDOM) { + let body = document.body + let nativeMatch = body.matches + || body.matchesSelector + || body.webkitMatchesSelector + || body.mozMatchesSelector + || body.msMatchesSelector; -export default matches + matchesCache = nativeMatch + ? (node, selector) => nativeMatch.call(node, selector) + : ie8MatchesSelector + } + + return matchesCache ? + matchesCache(node, selector) : + null; +} function ie8MatchesSelector(node, selector) { var matches = qsa(node.document || node.ownerDocument, selector)