jQuery - Выбрать предыдущий элемент DOM, соответствующий классу, когда элемент DOM не находится в том же дереве - PullRequest
1 голос
/ 02 сентября 2010

Я пытаюсь использовать jQuery для доступа к объекту DOM, который появляется ранее в коде, из объекта DOM, с которого я начинаю.Обычно это легко сделать с помощью методов обхода jQuery, таких как .parentsUntil.Однако в этом случае объект, который я пытаюсь найти, не является родителем или родным братом объекта, с которого я начинаю.

Например, представьте следующую иерархию:

  • таблица
    • tr
      • тд A
      • тд B
    • тр
      • тд C
        • входD

Начиная с входа D можно найти html () td A, когда может быть любое числоэлементов между A и D?

Спасибо за вашу помощь, и я прошу прощения, если это слишком расплывчато, я перепишу вопрос при необходимости.

1 Ответ

2 голосов
/ 02 сентября 2010

Я не уверен, что вы спрашиваете (см. Мой комментарий выше).Итак, предполагая, что вы хотите найти html-содержимое td класса A, которое ближе всего к элементу D, но при этом находится "выше" D в DOM, вы можете попробовать нечто подобное:*

$('input#D')      // somehow uniquely identify our starting point
  .closest('tr')  // up to the closest enclosing TR
  .prevAll()      // and then get its preceding siblings
  .has('td.B')    // reduce this set to only those containing a td.B
  .last()         // choose the last one (thus closest to 'D')
  .find('td.B')   // now work downward to td.B itself
  .html();        // and get the content

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

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