Сравнение элементов DOM с помощью jQuery - PullRequest
0 голосов
/ 05 августа 2009

Я работаю внутри jQuery each итератор:

$('p').each(function(){ ... });

Я хотел бы создать выражение, которое оценивается как true, когда:

  • $(this) - последний p элемент
  • область действия $(this).parent()
  • $(this) должен быть прямым потомком $(this).parent()
  • $(this) не обязательно является последним прямым потомком $(this).parent()

Вот несколько сценариев, с желаемым p, отмеченным звездочками:

<div>
  <p>div1 p1</p>
  <p>div1 p2</p>
  <p>div1 p3***</p>
</div>

<div>
  <p>div2 p1***</p>
  <span>div2 s1</span>
</div>

<div>
  <p>div3 p1***</p>
  <div>
    div3 d1
    <p>div3 p2</p>
  </div>
</div>

Я бы опубликовал свои попытки найти решение, но их было слишком много. Спасибо за помощь.

1 Ответ

2 голосов
/ 05 августа 2009

Вы можете использовать такой селектор, как этот:

$('body > div').each(function() {
    $(this).children('p:last').each(function() { /* ... */ });
});

, который вернет все ваши <p> теги.

Вот демоверсия: http://jsbin.com/orage | См. Источник


Ваши первоначальные требования не имеют никакого смысла.

$(this) должен быть прямым потомком $(this).parent()

$(this) ВСЕГДА является прямым потомком $(this).parent() по определению того, что parent() делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...