Temukan elemen html yang dimulai dengan id

89

pertanyaan saya adalah ini:

Saya memiliki kode HTML di beberapa halaman, pada masing-masing halaman saya menggunakan JQgrid (jquery grid) untuk menampilkan beberapa data. Saya tahu bahwa di setiap halaman tersebut, elemen yang menahan JQgrid dinamai sebagai "LIST_xxx". Sekarang saya perlu membuat javascript yang mengambil elemen "LIST_XXXX" pada setiap halaman dan melakukan beberapa hal. Bagaimana saya bisa mencari elemen dengan ID tetapi hanya mengetahui bagian awalnya (dari ID, seperti yang saya sebutkan sebelumnya):

$('#list_[XXXX]')... --> The part surrounded by [] is variable on each page, i want to discriminate that.

Saya harap saya membuat diri saya jelas. Terima kasih.

lidermin
sumber

Jawaban:

173

Mencoba

$('div[id^="list_"]')

Ini harus berhasil

Glen Little
sumber
Tata letak yang jauh lebih baik pada referensi itu daripada dokumentasi jquery.
Yuriy Faktorovich
Ini berfungsi dengan baik terima kasih ... Saya menggunakannya untuk menemukan id yang diakhiri dengan nilai tertentu seperti if ($ ('div [id $ = "' + val + '"]'). Length> 0) mengeksekusi sesuatu;
raphie
baik, Ini bekerja dengan baik untuk ID kontrol sederhana di atas. Cara membuatnya berfungsi untuk skenario seperti saya memiliki kontrol dengan ID seperti "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city", dan seterusnya, dan saya ingin jumlah semua elemen yang memiliki ID seperti "txt _ * _ kota "
Rajiv Bhardwaj
@Rajiv jika Anda memiliki kendali atas html, akan lebih baik untuk menambahkan kelas seperti "kota" ke masing-masing elemen tersebut. Anda kemudian dapat dengan mudah menghitungnya.
Glen Little
@Rajiv jika Anda tidak dapat meningkatkan html, periksa api.jquery.com/multiple-attribute-selector - Anda dapat menggabungkan selektor. Misalnya, $ ("span [id ^ = 'txt _'] [id $ = '_ city']")
Glen Little
22

Anda perlu menggunakan atribut dimulai dengan selector , seperti ini:

$('[id^=list_]').whatever()
SLaks
sumber
baik, Ini bekerja dengan baik untuk ID kontrol sederhana di atas. Cara membuatnya berfungsi untuk skenario seperti saya memiliki kontrol dengan ID seperti "txt_0_city", "txt_1_city", "txt_2_city", "txt_3_city", dan seterusnya, dan saya ingin jumlah semua elemen memiliki ID seperti "txt _ * _ kota "
Rajiv Bhardwaj
Hai @Rajiv, selamat datang di stackoverflow. Saya telah menanggapi salinan lain dari komentar Anda.
Glen Little
8

Beri elemen itu nama kelas yang sama atau beberapa atribut lain yang dapat Anda kueri.

Yuriy Faktorovich
sumber
Hai, terima kasih atas jawaban Anda, masalah dengan saran Anda adalah mungkin ada beberapa tabel yang memiliki JQgrid, jadi mungkin ada: "LIST_customer", "LIST_carrier" ... dan seterusnya. Dan saya harus memilih keduanya hanya berdasarkan bagian ID awal: "LIST_".
Lidermin
1
Saya mengerti, tetapi membuat mereka semua menjadi kelas Daftar sepertinya pendekatan yang lebih mudah dibaca dan deskriptif bagi saya. Untuk masing-masing miliknya, Anda selalu dapat menggunakan pemilih dimulai dengan di jquery seperti yang ditunjukkan oleh jawaban lain.
Yuriy Faktorovich
@lidermin Apa yang Yuriy katakan harus bekerja. Mengapa Anda tidak menambahkan kelas ke kontrol Anda seperti "daftar" karena Anda memiliki list_ sebagai awalan Anda. jadi ketika Anda memilih kelas itu, itu akan mendapatkan masing-masing kontrol tersebut. Ini akan menjadi cara paling efisien untuk melakukannya.
Josh Mein
Jawaban Yuriy akan berhasil. Anda dapat menambahkan kelas yang sama (misalnya "ListINeedToFind") ke semua elemen "LIST_XXXX" Anda, lalu mencarinya menggunakan $('.ListsINeedToFind').
Annabelle
Terkadang perlu memiliki beberapa elemen dengan kelas yang sama tetapi ID berbeda.
Vincent
1

Untuk mendapatkan elemen yang diakhiri dengan id / karakter tertentu

find('[id$=someid]')

Untuk mendapatkan elemen yang dimulai dengan id / karakter tertentu

find('[id*=anotherid]')

Untuk mendapatkan elemen yang cocok dengan id / karakter tertentu

find('[id^=id]')
Haroon Khalid
sumber