@ssumatokhin

Метод siblings() из jquery в JS?

Друзья, вопрос такой, в jquery есть замечательный метод по работе с DOM .siblings(), есть ли аналогичный метод в чистом JS, может быть в новом стандарте ES6 есть что то подобное или как можно его реализовать ? Есть вот такой вариант реализации, но он мне кажется сложноватым.
function siblings(elem) {
    return Array.from(elem.parentNode.children).filter(el => el !== elem);
}
  • Вопрос задан
  • 4995 просмотров
Решения вопроса 1
@Gegam
var siblings = Array.prototype.slice.call(el.parentNode.children);

for (var i = siblings.length; i--;) {
  if (siblings[i] === el) {
    siblings.splice(i, 1);
    break;
  }
}

el - это твой DOM узел
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
xenohunter
@xenohunter
Epistemological anarchist
Есть метод document.querySelector(), но нет селектора для всех соседних элементов.
Так что, ответ, с 99.9% вероятностью, - нет.
Ещё можно вот здесь удобно посмотреть код jQuery.
Ответ написан
Комментировать
@ssumatokhin Автор вопроса
Кстати еще есть одни вариант реализации, так как array.from() не работает в осле и на него огромный полифил. Можно реализовать так :
function siblings(elem) {
    let siblings = [];
    let sibling = elem;
    while (sibling.previousSibling) {
        sibling = sibling.previousSibling;
        sibling.nodeType == 1 && siblings.push(sibling);
    }

    sibling = elem;
    while (sibling.nextSibling) {
        sibling = sibling.nextSibling;
        sibling.nodeType == 1 && siblings.push(sibling);
    }

    return siblings;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы