Bagaimana cara memilih elemen di jQuery dengan menggunakan variabel untuk ID?

100

Misalnya, berikut ini memilih divisi dengan id = "2":

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

Bagaimana saya melakukan sesuatu seperti ini:

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

Sintaks di atas menghasilkan kesalahan. Saya memeriksa dokumentasi jQuery dan jawabannya di sini tanpa hasil.

Tony
sumber
6
Wow, lima jawaban yang persis sama ...
Zifre

Jawaban:

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

Lebih penting lagi, melakukan pencarian tubuh tambahan tidak berdampak pada kinerja. Cara yang tepat untuk melakukannya adalah:

row = $('#' + row_id);
Rick Hochstetler
sumber
46

Cara terpendek adalah:

$("#" + row_id)

Membatasi pencarian pada tubuh tidak ada manfaatnya.

Selain itu, Anda harus mempertimbangkan untuk mengganti nama ids Anda menjadi sesuatu yang lebih bermakna (dan sesuai dengan HTML sesuai jawaban Paolo), terutama jika Anda memiliki kumpulan data lain yang perlu diberi nama juga.

John Rasch
sumber
Saya suka yang ringkas. Saya baru saja menggunakan ini dengan tooltips qTip2, berfungsi dengan baik. Saya sedikit penasaran apa hukuman kinerja untuk menghasilkan banyak "tepat waktu" ini seperti dalam menanggapi masukan pengguna.
PJ Brunet
26

Melakukan $('body').find();tidak perlu saat mencari berdasarkan ID; tidak ada perolehan kinerja.

Harap perhatikan juga bahwa memiliki ID yang dimulai dengan angka bukanlah HTML yang valid :

Token ID dan NAMA harus dimulai dengan huruf ([A-Za-z]) dan dapat diikuti dengan sejumlah huruf, angka ([0-9]), tanda hubung ("-"), setrip bawah ("_") , titik dua (":"), dan titik (".").

Paolo Bergantino
sumber
6

Anda bisa melakukannya seperti ini:

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

Ada dua masalah dengan kode Anda

  1. Untuk menemukan elemen dengan ID Anda harus mengawalinya dengan "#"
  2. Anda mencoba untuk mengirimkan Angka ke fungsi find ketika String diperlukan (meneruskan "#" + 5 akan memperbaikinya karena akan mengubah 5 menjadi "5" terlebih dahulu)
Bert Lamb
sumber
0

Saya tidak tahu banyak tentang jQuery, tetapi coba ini:

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

Sunting: Tentu saja, jika variabelnya adalah angka, Anda harus menambahkan "#"di depan:

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