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.

Jawaban:


173

Mencoba

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

Ini harus berhasil


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()

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.


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]')
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.