次のようなテーブル行があります。
<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");
オプション Aは、直前のアイテムが同じ親を持つ場合にのみ機能しますが、そうでない場合は、望ましい結果prevParentA === []
ではありません。
オプション Bは常に機能しているように見えますが、そのクラスに一致する以前のアイテムをすべて選択し、最初に見つかったアイテムを選択するという点で醜いです。
オプション Bよりも優れたオプションはありますか?