Jika saya memiliki yang berikut ini:
<div class="apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>
Saya dapat menggunakan pemilih berikut untuk menemukan dua DIV pertama:
$("div[class^='apple-']")
Namun, jika saya memiliki ini:
<div class="some-other-class apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>
Ini hanya akan menemukan DIV kedua, karena kelas div pertama dikembalikan sebagai string (saya pikir) dan tidak benar-benar dimulai dengan 'apple-' melainkan 'some-'
Salah satu cara untuk tidak menggunakan dimulai dengan, tetapi berisi:
$("div[class*='apple-']")
Masalahnya adalah itu juga akan memilih DIV ke-3 dalam contoh saya.
Pertanyaan: Melalui jQuery, apa cara yang tepat untuk menggunakan pemilih predikat pada nama kelas individu, dan bukan seluruh atribut kelas sebagai string? Apakah ini hanya masalah meraih CLASS, kemudian membaginya menjadi sebuah array dan kemudian mengulang setiap individu dengan regex? Atau apakah ada solusi yang lebih elegan / kurang bertele-tele?
var divs = $("div[class^='apple-']"); if(divs.length == 0) divs = $("div[class*=' apple-']");
Saya akan merekomendasikan membuat "apel" kelasnya sendiri. Anda harus menghindari permulaan-dengan / akhir-dengan jika Anda bisa karena bisa memilih menggunakan
div.apple
akan jauh lebih cepat. Itu solusi yang lebih elegan. Jangan takut untuk membagi hal-hal menjadi kelas yang terpisah jika itu membuat tugas lebih mudah / lebih cepat.sumber
ini untuk awalan dengan
$("div[class^='apple-']")
ini untuk permulaan sehingga Anda tidak perlu memiliki '-' char di sana
$("div[class|='apple']")
Anda dapat menemukan banyak variasi keren lainnya dari pemilih jQuery di sini https://api.jquery.com/category/selectors/
sumber
Sementara jawaban teratas di sini adalah solusi untuk kasus khusus si penanya, jika Anda mencari solusi untuk benar-benar menggunakan 'dimulai dengan' pada nama kelas individual:
Anda dapat menggunakan pemilih jQuery khusus ini, yang saya sebut
:acp()
"Awalan Kelas." Kode ada di bagian bawah posting ini.Ini akan memilih setiap dan semua
<div>
elemen yang memiliki setidaknya satu nama kelas yang diawali dengan string yang diberikan ("starting_text" dalam contoh ini), terlepas dari apakah kelas itu di awal atau di tempat lain di string atribut kelas.Ini akan mengembalikan elemen 1, 2, dan 3, tetapi tidak 4 atau 5.
Berikut deklarasi untuk
:acp
pemilih khusus, yang dapat Anda tempatkan di mana saja:Saya membuat ini karena saya melakukan banyak peretasan situs GreaseMonkey di mana saya tidak memiliki kontrol backend, jadi saya sering perlu menemukan elemen dengan nama kelas yang memiliki sufiks dinamis. Sudah sangat berguna.
sumber
Coba ini:
sumber
dalam hal ini sebagai pertanyaan, Josh Stodola menjawab dengan benar Kelas yang dimulai dengan "apple-" plus kelas yang berisi "apple-"
tetapi jika elemen memiliki beberapa kelas seperti ini
maka solusi Josh Stodola tidak akan berhasil
karena ini harus melakukan hal seperti ini
mungkin itu membantu orang lain, terima kasih
sumber
Jika suatu elemen memiliki kelas kelipatan "[class ^ = 'apple-']" tidak bisa berfungsi, misalnya
sumber