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

Тестирование объектов для отношений предков/потомков в JavaScript или JQuery

Я пытаюсь придумать многократно используемую функцию JS или jQuery, которая позволила бы мне проверить, является ли один объект потомком DOM другого.

Я видел модель тестирования для

$b.parents('nodename').length>0

Это фантастика, когда вам нужно только проверить, является ли элемент дочерним по отношению к любому node этим именем.

Но как насчет конкретного node? Вы не можете проверить

$b.parents($a).length>0

Поскольку родители jQuery принимают выражение nodename в качестве аргумента для фильтрации.

В качестве небольшого фона я пытаюсь проверить, является ли цель события щелчка документа дочерним элементом определенного объекта. Например, если event.target является дочерним по отношению к $b, верните true, в противном случае верните false. Но позже эта функция может иметь другие последствия.

Спасибо!

4b9b3361

Ответ 2

a.contains(b)

Это чистое решение JavaScript, использующее Node.contains. Функция включена, a.contains(a) имеет значение true.

В IE9 есть крайний регистр: if b - это текст node, contains всегда будет возвращать false.

Ответ 3

Попробуйте следующее:

$('#foo').filter(function(){

   return $(this).parent().is('#foo-parent');

});

Итак, здесь мы выбираем все элементы foo и затем фильтруем только те элементы, которые имеют foo-parent как их непосредственный родитель.

Если вы ищете, чтобы какой-либо из предков текущего объекта соответствовал правилу, я предполагаю, что это должно быть:

$('#foo').filter(function(){

   return $(this).parents().is('#foo-parent');

});