Нужно написать функцию getParents, которая будет возвращать список всех родительских элементов и при надобности фильтровать их таким образом:
Element.getParents(function (a) {
return a.className == 'myClass'; // Выбираем только элементы с классом myClass
});
Вот код функции:
Object.prototype.getParents = function (exception) {
var tmp = [], r = (this instanceof Array ? this[0] : this).parentNode;
while(r.parentNode) {
tmp.push(r),
r = r.parentNode;
}
if (exception) {
var x = [];
for (var i = 0; i < tmp.length; i++) {
if (exception(tmp[i])) {
x.push(tmp[i]);
}
}
tmp = x;
}
return tmp;
};
При попытке отфильтровать возвращает пустой массив, почему?