Проверьте, является ли div потомком другого

Лучший способ узнать, является ли элемент потомком другого, есть еще один вопрос, очень похожий на этот, но его jquery.

так, как мне это сделать в js? У меня есть divs a, b, c, d, вложенные в этот порядок. также, не уверен, что имеет значение, есть другой a, b, c... и другой. это не только один элемент. существует много таких же идентификаторов/классов.

поэтому я хочу посмотреть, имеет ли d родительский элемент (независимо от того, насколько глубоко он вложен, если на нем есть какой-то родительский элемент), который называется a.

изменить: Кроме того, у меня была эта идея, что я могу проверить дочерние элементы "a" и посмотреть, является ли "d" одним из них, но не может реализовать его. если кто-то может заставить его работать, это будет потрясающе.

Ответы

Ответ 1

// x is the element we are checking
while (x = x.parentNode) { 
    if (x.id == "a") console.log("FOUND");
}

Ответ 3

Если вы хотите использовать чистый javascript, используйте node.contains.

например.

var a = document.getElementById('a');
var d = document.getElementById('d')
if (a.contains(d)) {
    alert('d is a child of a');
}

Fiddle: http://jsfiddle.net/FlameTrap/pwVPC/

Ответ 4

Метод closest() также может быть полезен в таких случаях. Этот метод возвращает ближайший элемент-предок элемента, который соответствует данному селектору (например, класс или идентификатор). Если такого элемента нет, метод возвращает null.

let d = document.getElementById("d");
// if there is no ancestor with the id 'a', the method returns null and this evaluates to false:
if(d.closest("#a")){
   alert("d is a descendant of an element with the id 'a'");
}

Вы можете найти дальнейшее описание и другие примеры использования на MDN.