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

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

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

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

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

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

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

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

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

Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
17
0
6 996
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуй это:

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

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

});

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

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

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

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

});
Ответ принят как подходящий

В Предки jQuery, использующие объекты jQuery я предложил

if ($(obj1).parents().index($(obj2)) >= 0) {
    // obj1 is a descendant of obj2
}

Идеальный. Этот фактически позволяет передавать объект вместо селектора, что является фантастическим. Еще раз спасибо!

dreisch 13.11.2008 22:55

Вы можете передать развернутый элемент DOM в индекс, так что это можно упростить до if ($ (obj1) .parents (). Index (obj2)> = 0)

Tim Moore 22.05.2009 04:22

Теперь есть $ .contains, если вас беспокоит Node.contains.

user69173 21.08.2013 02:51
a.contains(b)

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

В IE9 есть крайний случай: если b является текстовым узлом, contains всегда будет возвращать false.

Отлично! Меня устраивает. Я всегда предпочитаю чистый JS фреймворкам.

Firas 19.05.2013 00:52

Другие вопросы по теме