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


100

たとえば、次の例ではid = "2"の部門を選択しています。

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

次のようにするにはどうすればよいですか。

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

上記の構文ではエラーが発生します。私はjQueryのドキュメントをチェックし、ここで成功せずに答えました。


6
うわー、まったく同じ5つの回答...
Zifre 2009

回答:


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

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

row = $('#' + row_id);

46

最短の方法は:

$("#" + row_id)

検索を本文に限定しても、何のメリットもありません。

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


私は簡潔が好きです。私はこれをqTip2ツールチップと一緒に使用しました。ユーザー入力への応答など、これらの "ジャストインタイム"でこれらの多くを生成することに対するパフォーマンスのペナルティが何であるか、私は少し気になります。
PJ Brunet

26

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

数字で始まるID は有効なHTMLでないことにも注意してください:

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


6

あなたはこのようにそれを行うことができます:

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

1

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

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

0

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

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

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

row_id = 5
row = $("body").find("#"+row_id);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.