I am able to do this:
myDiv = getElementById("myDiv");
myDiv.querySelectorAll("#myDiv > .foo");
Good question, but as you see there is no way to do "combinator rooted queries" as John Resig names them.
However, in some cases you can just skip
.querySelectorAll and use other good old-fashioned DOM API features. Instead of the unsupported
myDiv.querySelectorAll("> *") you can just write
myDiv.children, for example.
Unfortunately I can't think of a way to handle your situation without adding more custom filter logic (e.g. find
.parentNode === myDiv), and obviously not ideal if you're trying to support one code path that really just wants to take an arbitrary selector string as input and a list of matches as output! But if like me you ended up asking this question simply because you got stuck thinking "all you had was a hammer" don't forget there are a variety of other tools the DOM offers too.