Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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.