Есть ли более причудливый способ получить предыдущий предмет того же класса?
У меня есть строки таблицы, например, так:
<tr class="parent0 row3" data-parent="0">
<td>...</td>
</tr>
<tr class="parent3 row7" data-parent="3">
<td>...</td>
</tr>
<tr class="parent3 row12" data-parent="3">
<td>...</td>
</tr>
<tr class="parent0 row8" data-parent="0">
<td>...</td>
</tr>
<tr class="parent0 row9" data-parent="0">
<td>...</td>
</tr>
Так что, если у меня есть обработчик кликов:
$(document).on({
"click": function(){
var parentId = $(this).data("parent");
//get previous sibling:
//OPTION A:
var prevParentA =
$(this).prev("parent" + parentId); //works sometimes
//OPTION B:
var prevParentB =
$(this).prevAll("parent" + parentId).eq(0); //works all the time but ugly...
}
}, "tr");
Option A работает только тогда, когда прямой предыдущий элемент имеет того же родителя, но когда этоnot случай,prevParentA === []
которыйnot желаемый результат.
Option B кажется, всегда работает, но этоugly в том, что он выбираетALL из предыдущих предметов, соответствующих этому классу и выбирающих 1-й, который он находит.
Есть ли лучший вариант, чемOption B?