Примечание: Похоже, что //div/ol/li/h3/a
- выражение XPath, которое больше не поддерживается jQuery afaik.
Если ваши целевые браузеры поддерживают его, вы можете просто использовать querySelectorAll
[MDN]:
var links = document.querySelectorAll('div > ol > li > h3 > a');
В противном случае, прямое преобразование будет:
// root is the element you start with, e.g. `document.body`
var selector = ['ol', 'li', 'h3', 'a'],
set = root.getElementsByTagName('div');
for(var i = 0, len = selector.length; i < len; i++) {
var tag = selector[i],
new_set = [];
for(var j = 0, lenj = set.length; j < lenj; j++) {
for(var child = set[j].firstChild; child; child.nextSibling) {
if(child.nodeName.toLowerCase() === tag) {
new_set.append(child);
}
}
}
set = new_set;
}
В конце концов, set
будет содержать все ссылки. Можно также написать рекурсивную функцию или упростить код, если будет предоставлена дополнительная информация о структуре HTML.
'// DIV/ол/Li/h3/A' кажется, что будет [выражение XPath] (http://docs.jquery.com/DOM/Traversing/Selectors#XPath_Selectors) и'/' обозначает отношения родитель-потомок. –