web-dev-qa-db-ja.com

IDの変数を使用してjQueryの要素を選択するにはどうすればよいですか?

たとえば、次のコードはid = "2"の部門を選択します。

row = $("body").find("#2");

このようなことをするにはどうすればよいですか:

row_id = 5;
row = $("body").find(row_id);

上記の構文はエラーを生成します。ここでjQueryのドキュメントを確認し、成功せずに回答しました。

96
Tony
row = $("body").find('#' + row_id);

さらに重要なのは、追加のbody.findを実行してもパフォーマンスに影響がないことです。これを行う適切な方法は単純です:

row = $('#' + row_id);
180

最短の方法は次のとおりです。

$("#" + row_id)

検索を本文に限定しても何の利点もありません。

また、特に名前を付ける必要のある別のデータセットがある場合は、idsをより意味のある名前に変更することを検討する必要があります(Paoloの回答によるとHTML準拠)。

44
John Rasch

IDで検索する場合、$('body').find();を実行する必要はありません。パフォーマンスの向上はありません。

また、数字で始まるIDは 無効なHTML であることに注意してください。

IDおよびNAMEトークンは文字([A-Za-z])で始まる必要があり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます、コロン( ":")、およびピリオド( "。")。

26

次のようにできます:

row_id = 5;
row = $("body").find('#'+row_id);
5
Amr Elgarhy

コードには2つの問題があります

  1. IDで要素を見つけるには、先頭に「#」を付ける必要があります
  2. 文字列が必要なときに、find関数にNumberを渡そうとしています( "#" + 5を渡すと、最初に5を "5"に変換するため、これを修正します)
1
Bert Lamb

私はjQueryについてあまり知りませんが、これを試してください:

row_id = "#5";
row = $("body").find(row_id);

編集:もちろん、変数が数値の場合、"#"を先頭に追加する必要があります。

row_id = 5
row = $("body").find("#"+row_id);
0
Zifre