1

次のようなテーブル レイアウトがある場合:

<table>
  <tr class="one">
    <td>
      ...
    </td>
  </tr>
  <tr class="two">
    <td>
      ...
    </td>
  </tr>
  <tr class="three">
    <td>
      ...
    </td>
  </tr>
  <tr class="four">
    <td>
      ...
    </td>
  </tr>
</table>

最初に表示されている行を見つける最も簡単な方法は何ですか? これは、一部の行クラスで、フィルタリング プロセスの一部として「display: none」が設定されている可能性があるためです。

私はそれを考えました:

tr:first-child

うまくいきますが、行を非表示にするとうまくいかないことがわかりました!

4

1 に答える 1

5

使用できる場合はjQuery、次のとおりです。

$('tr:visible:first').foo();

JavaScriptがないとできません。

速度が非常に重要な場合、これは少し高速です。

$('tr').filter(':visible').first().foo();

ドキュメント:

:visible は jQuery の拡張機能であり、CSS 仕様の一部ではないため、:visible を使用するクエリは、ネイティブ DOM の querySelectorAll() メソッドによって提供されるパフォーマンスの向上を利用できません。:visible を使用して要素を選択するときに最高のパフォーマンスを実現するには、最初に純粋な CSS セレクターを使用して要素を選択し、次に .filter(":visible") を使用します。

于 2012-07-03T00:16:41.450 に答える