Jika html saya terlihat seperti ini:
<td class="controlCell">
<input class="inputText" id="SearchBag.CompanyName" name="SearchBag.CompanyName" type="text" value="" />
</td>
Bagaimana saya bisa memilih # SearchBag.CompanyName dengan JQuery? Saya tidak bisa membuatnya bekerja dan saya khawatir titik itulah yang menghancurkan semuanya. Yang menjengkelkan adalah bahwa mengubah nama semua id saya akan menjadi banyak pekerjaan, belum lagi hilangnya keterbacaan.
Catatan:
Tolong jangan mulai berbicara tentang bagaimana tabel tidak dibuat untuk lay-out. Saya sangat menyadari nilai dan kekurangan CSS dan berusaha keras untuk menggunakannya sebanyak mungkin.
Jawaban:
@Tomalak dalam komentar:
"# Id.class" adalah pemilih yang valid yang membutuhkan id dan kelas terpisah untuk mencocokkan; ini valid dan tidak selalu sepenuhnya berlebihan.
Cara yang benar untuk memilih literal '.' di CSS adalah untuk menghindarinya: "#id \ .moreid". Ini digunakan untuk menyebabkan masalah di beberapa browser lama (khususnya IE5.x), tetapi semua browser desktop modern mendukungnya.
Metode yang sama tampaknya berfungsi di jQuery 1.3.2, meskipun saya belum mengujinya secara menyeluruh; quickExpr tidak mengambilnya, tetapi parser pemilih yang lebih terlibat tampaknya benar:
sumber
$('[id="profile.birthdate"]')
Satu varian adalah ini:
sumber
Anda tidak perlu melarikan diri apa pun jika menggunakan
document.getElementById
:getElementById
mengasumsikan input hanya atribut id, sehingga titik tidak akan ditafsirkan sebagai pemilih kelas.sumber
Jawaban Singkat : Jika Anda memiliki elemen dengan id =
"foo.bar"
, Anda dapat menggunakan pemilih$("#foo\\.bar")
Jawaban yang Lebih Panjang : Ini adalah bagian dari dokumentasi jquery - penyeleksi bagian yang dapat Anda temukan di sini: http://api.jquery.com/category/selectors/
Pertanyaan Anda dijawab tepat di awal dokumentasi:
sumber
pemilihan attr tampaknya sesuai ketika ID Anda dalam variabel:
sumber
Hal ini didokumentasikan dalam API jQuery penyeleksi :
Singkatnya, awali
.
dengan\\
.Masalahnya adalah bahwa
.
akan cocok dengan kelas, jadi$('#SearchBag.CompanyName')
akan cocok<div id="SearchBag" class="CompanyName">
. Orang yang melarikan diri\\.
akan diperlakukan sebagai orang normal.
tanpa arti khusus, cocok dengan ID yang Anda inginkan.Ini berlaku untuk semua karakter
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
yang seharusnya memiliki arti khusus sebagai pemilih di jQuery.sumber
Guys yang mencari solusi yang lebih umum, saya menemukan satu solusi yang menyisipkan satu garis miring ke belakang sebelum karakter khusus, ini menyelesaikan masalah terkait dengan mengambil nama & ID dari div yang berisi karakter khusus.
Semoga ini bermanfaat!
sumber
Anda dapat menggunakan pemilih atribut:
Atau Anda dapat menentukan jenis elemen:
sumber