Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Opa!
Então eu to com um problema que preciso localizar se um elemento clicado possui possui algum de seus parentes um atributo.
Logo esse click está "e é obrigatório que esteja" vinculado ao documento então não posso checar isso a partir dele, então o que eu fiz foi criar uma função que obtém todos os elementos antecessores ao qual ele(s) pertence(m).
Nesse exemplo que preparei para demostrar a questão estou tentando saber se um elemento clicado possui algum parente com o atributo data.
A função por sua vez me traz um array com todos os parente e bingo lá está o elemento com esse atributo, o problema que preciso entrar numa condição caso haja esse atributo entre os elementos da lista.
Spoiler
<!DOCTYPE html>
<html>
<head>
<title>a</title>
<meta charset="UTF-8">
<style>
div { padding: 40px; border: 1px solid black }
</style>
<script>
function teste(e) {
var click = e.target;
var parente = NodeParents(click);
console.log(parente);
}
function NodeParents(node) {
var atual = node, lista = [];
while (atual.parentNode != null && atual.parentNode != document.documentElement) {
lista.push(atual.parentNode);
atual = atual.parentNode;
}
return lista;
}
document.addEventListener('click', teste, false);
</script>
</head>
<body>
<div>Primeiro</div>
<div data-alvo="alvo">
Segundo
<div>
Terceiro
<div>
Quarto
</div>
</div>
</div>
<div>
Quinto
<div>
Sexto
</div>
</div>
</body>
</html>
Como deu para perceber não posso pegar esse valor pelo índice do array, tenho que saber se nesse array possui algum elemento com esse atributo.
Para facilitar a situação da ajuda coloquei o código no JSFiddle: [https://jsfiddle.net/SpellMaster/npfw1xhk/1/](https://jsfiddle.net/SpellMaster/npfw1xhk/1/)
Quem puder dar uma força aqui agradeço porque estou quebrando a cabeça numa coisa tão simples e não estou conseguindo achar uma solução.Carregando comentários...