または、できるだけ少ないIDを指定し、親が子divにアクセスします。このために、私は次のようなことをしなければなりません:$(parentDiv).attr( "child"、childDiv)、または$(parentDiv).data( "child"、childDiv) "
-$(parentDiv).attr( "child")または$(parentDiv).data( "child")で子要素を取得します
これは、子要素または子孫要素にアクセスする方法ではありません。children
、find
などを使用します。
私の質問は、どちらがより効率的な方法であるかです(これはより高速で、より良い設計と見なされます。など)。
それらはおそらく別々の質問です。によって要素よりもはるかに効率的に要素にアクセスできる可能性は低いですが、構造が健全であれば、要素id
を見つけることと構造的に見つけることの効率の違いはそれほど重要ではありません。ナビゲートできるいくつかのアンカーポイントで十分です。
構造に関する詳細情報がなければ、確かな例を提供するのは難しいですが、セルのクリックに応答したいテーブルのかなり古典的なケースを考えてみましょう。
<table>
<tbody id="foo">
<tr data-info="first row">
<td>One</td>
<td>Two</td>
<td>Three</td>
</tr>
<tr data-info="second row">
<td>One</td>
<td>Two</td>
<td>Three</td>
</tr>
</tbody>
</table>
他のセルのクリックに基づいてセルを更新することはかなり一般的です。これを行うには、テーブルのID、イベント委任、および構造トラバーサルメソッドを使用します。
$("#foo").on('click', 'td', function() {
// `this` is the cell that was clicked. If I want row-level data, I'd use:
alert("This row's info is " + $(this).closest('tr').data('info'));
// Or maybe I want the last cell in the row
alert("Last cell's text: " + $(this).siblings().last().text());
});