Лучший способ узнать, является ли элемент потомком другого - PullRequest
63 голосов
/ 29 июня 2009

Я нахожусь в процессе реализации jQuery и извлечения библиотек Prototype из моей кодовой базы, и мне интересно, не могли бы вы дать мне лучший способ реализовать эту функциональность в jQuery. Я знаком с синтаксисом потомка jQuery > Потомок, но просто хочу проверить, является ли элемент потомком по true или false, как показано ниже: Кто-нибудь может дать мне наиболее эффективное решение jQuery для этого?

<div id="australopithecus">
  <div id="homo-herectus">
    <div id="homo-sapiens"></div>
  </div>
</div>

$('homo-sapiens').descendantOf('australopithecus');
// -> true

$('homo-herectus').descendantOf('homo-sapiens');
// -> false

Ответы [ 11 ]

0 голосов
/ 29 июня 2009
function descendantOf(parentId, childId) {
   return ( $('#'+parentId+' > #'+childId).length === 1 );
}

Это должно сработать.

Как было указано в комментарии ниже, если вы не хотите, чтобы это были просто прямые потомки:

function descendantOf(parentId, childId) {
   return ( $('#'+childId, $('#'+parentId)).length === 1 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...