Though it’s not a full answer, you should keep an eye on the W3C Selector API v.2 which is already available in most browser, both desktop and mobile, except IE (Edge seems to support): see full support list.
function(elem) {
return elem.querySelectorAll(':scope > someselector');
};