Jquery: выделение всех элементов, появляющихся после определенного элемента позже на странице - PullRequest
1 голос
/ 07 апреля 2011

Как выбрать все элементы, которые появляются после определенного элемента, т.е. позже на странице

Ответы [ 5 ]

7 голосов
/ 07 апреля 2011

Если все элементы, о которых вы говорите, это братья и сестры по отношению друг к другу, тогда .nextAll() - это функция, которую нужно использовать.

Если элементы могут появляться в любом месте на странице (независимо от того, на каком уровне они вложены), то вы можете воспользоваться тем фактом, что jQuery (начиная с версии 1.4) всегда возвращает элементы в порядок документов, даже когда вы .add() что-то в коллекции.

Поэтому основная идея состоит в том, чтобы сначала выбрать все элементы независимо от того, находятся ли они до или после элемента «start», а затем добавить элемент «start» в коллекцию. Затем вы можете перебрать отсортированные элементы, ища положение элемента «start». Затем просто .slice() все элементы после этой позиции:

var start = '#start';
var all = 'p';
var index;

var afters = $(all).add(start).each(function (i) {
    if ($(this).is(start)) {
        index = i;
        return false; // quit looping early
    }
}).slice(index + 1);

См. Это в действии здесь .

1 голос
/ 07 апреля 2011

Как вы идентифицируете свой «определенный элемент»?это с использованием определенного идентификатора.или просто имя тега.

Вы также можете добавить идентификатор к каждому тегу, который вы называете «определенным элементом», и использовать nextall (), чтобы показать все содержимое после идентификатора.это просто дикая догадка.

1 голос
/ 07 апреля 2011

Я не верю, что есть простой способ сделать это.Реальный вопрос в том, почему вы хотите?В любом случае, если вам действительно нужно, поможет некоторая комбинация .nextAll (), .each () и .children ().

var nodes = [];

$('#original').nextAll().each(function() {
  nodes.push(this);
  $(this).children().each(function() {
     // some recursive function to add a deep set of children
  }
}

Но, опять же, вы, вероятно, должны сделать что-то другое.

1 голос
/ 07 апреля 2011

Можете ли вы предоставить фрагмент кода или хотя бы образец структуры или описание того, чего вы хотите достичь? Вы проверили иерархию селекторов jQuery ?

0 голосов
/ 07 апреля 2011

см. это

другой способ сделать это

$('selector').nextALL('selector')

см. Это nextAll

$('div.third-item').nextAll("div")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...