JSFiddle - React, Tailwind, and code Playground

HTML

Clique sobre os objetos elementos parentes e descentes (obs.: veja o console)

<div id="cobrar">Cobras
    <ul id="venomous">Venenosas
        <li>Jararaca</li>
        <li>Cascável</li>
    </ul>
    <ul id="non-venomous">Sem veneno
        <li>Python</li>
        <li>Anaconda</li>
    </ul>
    
</div>Clique em qualquer uma das aves para ver seus irmãos
<div>Passáros
    <ul id="passaros">
        <li>Flamingo</li>
        <li>Gaivota</li>
        <li>Corvo</li>
        <li>Maritaca</li>
    </ul>
</div>

CSS

div {
    color: white;
    background-color: #93d0ea;
    font-family: sans-serif;
    width: 180px;
    text-align: center;
    padding: 10px;
    margin: 5px;
}

JavaScript

var cobras = document.querySelector('#cobras'),
    passaros = document.querySelector('#passaros');

cobras.addEventListener('click', function (e) {

    // Para acessar o pai de um determinado elemento no DOM, usamos o método parentNode.

    var pai = e.target.parentNode;

    console.log("Pai: " + pai.id);

    // Pelo contrário, chamando o método .children recebe todos os elementos filhos do objeto selecionado.

    console.log("Filhos: ");
    var filhos = e.target.children;

    // Este retorna um HTMLCollection (um tipo de matriz), então temos que fazer uma iteração para acessar o conteúdo de cada criança.

    for (var i = 0; i < filhos.length; i++) {

        console.log(filhos[i].textContent);

    }
});


passaros.addEventListener('click', function (e) {

    // Obtendo o irmão mais próximo de seu elemento

    var anterior = e.target.previousElementSibling;

    if (anterior) {
        console.log("Irmão anterior: " + anterior.textContent);
    }

    var proximo = e.target.nextElementSibling;

    if (proximo) {
        console.log("Próximo irmão: " + proximo.textContent);
    }

    // No entanto, para adquirir todos os irmãos de um nó é um pouco mais complexo.
    // Temos que pegar todos os filhos de seu pai e, em seguida, excluir o elemento original.
    // Isso é feito por meio de filtro e chama uma função que verifica todos os irmãos.

    console.log("Todos irmãos: ");

    Array.prototype.filter.call(e.target.parentNode.children, function (child) {
        if (child !== e.target) {
            console.log(child.textContent);
        }
    });

});