Найти ближайший элемент строки таблицы с определенным атрибутом класса, смотрящим в обратном направлении от текущего элемента

У меня есть JqGrid, и я хочу автоматически переключать отображение последней отредактированной строки/группы при возврате к представлению/странице, содержащей сетку.

Процесс у меня такой

  1. Запишите последний отредактированный OrderId в переменную сеанса после завершения добавления/редактирования.
  2. Передайте это в представление, где хранится в скрытом элементе формы

Что я хотел бы сделать сейчас, так это использовать этот «id», чтобы найти ближайшую (в обратном порядке) строку таблицы группировки, которую я затем могу использовать для переключения отображения.

Для OrderId легко идентифицировать, так как атрибут id "" соответствует OrderId.

Однако элемент группировки имеет индекс 0 и нумеруется только в соответствии с его положением в сетке, т. е. он не относится к OrderId или OrderLinkId.

24/10/2012 В приведенный ниже пример внесены поправки, демонстрирующие, что элементы заголовка группы закрываются перед отдельными элементами Order, т.е. братья и сестры не родитель/ребенок

<tr id="clientOrderGridghead_0_6" class="ui-widget-content jqgroup ui-row-ltr clientOrderGridghead_0" role="row">
.....Group Header 6 Content.....
</tr>
<tr id="403" class="ui-widget-content jqgrow ui-row-ltr" style="" tabindex="-1" role="row">
</tr>
<tr id="414" class="ui-widget-content jqgrow ui-row-ltr" style="" tabindex="-1" role="row">
</tr>
<tr id="418" class="ui-widget-content jqgrow ui-row-ltr" style="" tabindex="-1" role="row">
</tr>
<tr id="clientOrderGridghead_0_7" class="ui-widget-content jqgroup ui-row-ltr clientOrderGridghead_0" role="row">
......Group Header 7 Content......
</tr>

В приведенном выше примере показан верхний элемент, который действует как заголовок группы, а последующие 3 элемента являются строками записей для связанных заказов.

Элемент заголовка всегда имеет класс

class="ui-widget-content jqgroup ui-row-ltr clientOrderGridghead_0"

Мне удалось успешно выполнить переключение, жестко закодировав идентификатор элемента группы следующим образом.

jQuery('#clientOrderGrid').jqGrid('groupingToggle','clientOrderGridghead_0_6');

Но сейчас я изо всех сил пытаюсь получить идентификатор, необходимый для подключения к вызову groupingToggle и сделать его динамическим.

Я пробовал следующее

var groupId = $('#' + lastOrderId).closest('tr').find('.ui-widget-content jqgroup ui-row-ltr clientOrderGridghead_0').attr('id');

После просмотра примера здесь Использование имени класса в jQuery .closest()

Но но это возвращает undefined.

Любые указатели с благодарностью.

24.10.2012 Еще одна попытка

var groupId = $('#' + lastOrderId).closest('tbody').find('.ui-widget-content jqgroup ui-row-ltr clientOrderGridghead_0').attr('id');

Но до сих пор нет радости


person Cheesenbranston    schedule 23.10.2012    source источник


Ответы (1)


Я думаю, тебе стоит пойти на

var groupId = $('#' + lastOrderId).parent().find('.clientOrderGridghead_0').attr('id');

РЕДАКТИРОВАТЬ: Удалены ненужные классы в find.

РЕДАКТИРОВАТЬ 2: Я не мог понять ваш вопрос в первую очередь.

Пожалуйста, попробуйте это:

var groupId = $('#' + lastOrderId).prev('.clientOrderGridghead_0').attr('id');

Я серьезно надеюсь, что это работает для вас на этот раз.

person Pulkit Mittal    schedule 23.10.2012
comment
Спасибо за ваш ответ @Pulkit Mittal, однако он по-прежнему возвращает «неопределенное». Хотя из моего исходного сообщения неясно, что заголовок группы закрыт перед другими элементами ‹tr› и не охватывает их, поэтому я считаю, что они рассматриваются как братья и сестры, а не как родитель/потомок. - person Cheesenbranston; 24.10.2012
comment
Моя ошибка. Я думаю, что то, что предложил @Pulkit Mittal, эквивалентно моей последней попытке, поскольку «tbody» является первым родительским узлом при обходе обратно вверх по дереву DOM. - person Cheesenbranston; 24.10.2012
comment
Спасибо @Pulkit. Я проверил ваше последнее отредактированное предложение и теперь возвращаю атрибут id. Единственная проблема заключается в том, что, поскольку все элементы ‹tr› заключены в один родительский ‹tbody›, я всегда получаю идентификатор одного и того же элемента заголовка группы ‹tr›, то есть clientOrderGridghead_0_0, первый в последовательности. Я отредактировал свою первоначальную попытку использовать метод «ближайший» с поиском, но теперь вернулся к «неопределенным» - person Cheesenbranston; 24.10.2012
comment
Эй, братан, зацени мое обновление на этот раз. Я не мог получить ваш вопрос до вашего последнего комментария. Я надеюсь, что это помогает. - person Pulkit Mittal; 24.10.2012
comment
Привет, Пуклит, нет проблем, мой вопрос изначально был не самым лучшим. Я сейчас не на работе, но завтра первым делом проверю и свяжусь с вами. Спасибо еще раз, - person Cheesenbranston; 24.10.2012
comment
Просто примечание, это относится к JqGrid. Я столкнулся с аномалией, когда заголовок, который нужно переключить, является первым в сетке. Я наблюдал и обнаружил, что в этом случае возвращается «неопределенное». Я поместил оператор if по умолчанию в первую строку, если это произошло, т.е. (groupId == null): 'clientOrderGridghead_0_0': groupId - person Cheesenbranston; 25.10.2012