Ответ 1
В предки jQuery, использующие объекты jQuery Я предложил
if ($(obj1).parents().index($(obj2)) >= 0) {
// obj1 is a descendant of obj2
}
Я пытаюсь придумать многократно используемую функцию JS или jQuery, которая позволила бы мне проверить, является ли один объект потомком DOM другого.
Я видел модель тестирования для
$b.parents('nodename').length>0
Это фантастика, когда вам нужно только проверить, является ли элемент дочерним по отношению к любому node этим именем.
Но как насчет конкретного node? Вы не можете проверить
$b.parents($a).length>0
Поскольку родители jQuery принимают выражение nodename в качестве аргумента для фильтрации.
В качестве небольшого фона я пытаюсь проверить, является ли цель события щелчка документа дочерним элементом определенного объекта. Например, если event.target является дочерним по отношению к $b, верните true, в противном случае верните false. Но позже эта функция может иметь другие последствия.
Спасибо!
В предки jQuery, использующие объекты jQuery Я предложил
if ($(obj1).parents().index($(obj2)) >= 0) {
// obj1 is a descendant of obj2
}
a.contains(b)
Это чистое решение JavaScript, использующее Node.contains. Функция включена, a.contains(a)
имеет значение true.
В IE9 есть крайний регистр: if b
- это текст node, contains
всегда будет возвращать false.
Попробуйте следующее:
$('#foo').filter(function(){
return $(this).parent().is('#foo-parent');
});
Итак, здесь мы выбираем все элементы foo и затем фильтруем только те элементы, которые имеют foo-parent как их непосредственный родитель.
Если вы ищете, чтобы какой-либо из предков текущего объекта соответствовал правилу, я предполагаю, что это должно быть:
$('#foo').filter(function(){
return $(this).parents().is('#foo-parent');
});