Czy istnieje lepszy sposób uzyskania poprzedniego przedmiotu z tej samej klasy?
Mam takie wiersze tabeli:
<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>
Więc jeśli mam program obsługi kliknięć:
$(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");
Opcja A działa tylko wtedy, gdy bezpośredni poprzedni element ma tego samego rodzica, ale kiedy to jestnie walizka,prevParentA === []
który jestnie pożądany wynik.
Opcja B zawsze wydaje się działać, ale tak jestbrzydki w tym, że wybieraWSZYSTKO poprzednich elementów pasujących do tej klasy i wybierając pierwszą znalezioną.
Czy jest lepsza opcja niżOpcja B?