1

次のようなテーブルがあります。

<table>
  <tr>
    <td><input id="c1" type="text" class=""></td>
    <td><input id="c2" type="text" class="readonly"></td>
    <td><input id="c3" type="text" class=""></td>
  </tr>
</table>

カスタム セル キーボード ナビゲーションを実装しています。たとえば、キーボード入力でフォーカスを新しいセルに移動できるようにしたいのですが、特定のセレクターに一致するセルをスキップします (必要なセルの最後で右矢印を押す) #c1。ではない次のセルにフォーカスを移動します.readonly。同様に、の先頭で左矢印を押すと、#c3フォーカスが ではない最後のセルに移動します.readonly

キーボード イベントを処理するコードは動作していますが、jQuery セレクターでフォーカスを移動する際に問題が発生しています。ループでやりたいことは簡単にできますが、これを行うためのよりエレガントな方法を探しています。私が現在使用しているセレクター (たとえば、「前」を から に移動#c3#c2ます (意図されている#c1)) は次のとおりです。

$(el).parent('td').prev('td').find('input').focus();

基本的にどうすればいいですか:

Element -> Parent 'td' -> Closest previous 'td' containing an 'input' element without the 'readonly' class

4

1 に答える 1

2

これを試して

$(el).closest('td').prevAll('td:has(input:not(.readonly))').first().find('input').focus();
于 2012-10-25T17:42:45.243 に答える