Apakah ada versi case sensitif dari : berisi pemilih jQuery atau haruskah saya melakukan pekerjaan secara manual dengan mengulang semua elemen dan membandingkan .text () ke string saya?
javascript
jquery
jquery-selectors
Menepuk
sumber
sumber
Jawaban:
Apa yang akhirnya saya lakukan untuk jQuery 1.2 adalah:
Ini akan memperluas jquery untuk memiliki: Berisi pemilih yang tidak peka huruf besar-kecil, pemilih: berisi tetap tidak berubah.
Sunting: Untuk jQuery 1.3 (terima kasih @ user95227) dan nanti Anda butuhkan
Sunting: Rupanya mengakses DOM secara langsung dengan menggunakan
dari pada
Dalam ungkapan sebelumnya, tingkatkan kecepatannya jadi cobalah risiko Anda sendiri jika kecepatan adalah masalah. (lihat @ John 's pertanyaan )
Suntingan terbaru: Untuk jQuery 1.8 seharusnya:
sumber
Untuk membuatnya opsional case-sensitive: http://bugs.jquery.com/ticket/278
lalu gunakan
:containsi
sebagai ganti:contains
sumber
Pada jQuery 1.3, metode ini sudah usang. Agar ini berfungsi, harus didefinisikan sebagai fungsi:
sumber
Jika seseorang (seperti saya) tertarik dengan arti a dan m [3] dalam definisi Berisi .
KEY / LEGENDA: Params disediakan oleh jQuery untuk digunakan dalam definisi pemilih:
r = jQuery array elemen yang diteliti. (mis: r.length = Jumlah elemen)
i = indeks elemen yang sedang diteliti, dalam array r .
a = elemen saat ini sedang dalam pengawasan. Pernyataan pemilih harus mengembalikan true untuk memasukkannya dalam hasil yang cocok.
m [2] = nodeName atau * yang kita cari (kiri dari titik dua).
m [3] = param diteruskan ke: selector (param). Biasanya nomor indeks, seperti pada : n-of-type (5) , atau string, seperti dalam : warna (biru) .
sumber
Di jQuery 1.8 Anda harus menggunakan
sumber
Variasi yang tampaknya berkinerja lebih cepat dan yang juga memungkinkan ekspresi reguler adalah:
Tidak hanya case-insensitive, tetapi ini memungkinkan pencarian yang kuat seperti:
$("p:containsCI('\\bup\\b')")
(Cocokkan "Naik" atau "naik", tetapi bukan "atas", "bangun", dll.)$("p:containsCI('(?:Red|Blue) state')")
(Cocokkan "red state" atau "blue state", tetapi bukan "up state", dll.)$("p:containsCI('^\\s*Stocks?')")
(Cocokkan "stok" atau "stok", tetapi hanya pada awal paragraf (mengabaikan spasi putih terkemuka).)sumber
Mungkin terlambat .... tapi,
Saya lebih suka pergi dengan cara ini ..
Dengan cara ini, Anda TIDAK mengutak-atik jQuery's NATIVE '.contains' ... Anda mungkin memerlukan yang default nanti ... jika diubah, Anda mungkin menemukan diri Anda kembali ke stackOverFlow ...
sumber
Kode pembaruan berfungsi baik dalam 1.3, tetapi "mengandung" huruf kecil pada huruf pertama tidak seperti contoh sebelumnya.
sumber
:contains
dan:Contains
akan bekerja secara bersamaan.Lihat di bawah untuk menggunakan ": berisi" untuk menemukan teks yang mengabaikan sensitivitas case-nya dari kode HTML,
Anda juga dapat menggunakan tautan ini untuk menemukan kode pengabaian case berdasarkan versi jquery Anda, Make jQuery: mengandung Case-Insensitive
sumber
Versi yang lebih cepat menggunakan ekspresi reguler.
sumber
Saya memiliki masalah serupa dengan yang berikut ini yang tidak berfungsi ...
Ini berfungsi dan tanpa perlu perpanjangan
Ini juga berfungsi, tetapi mungkin termasuk dalam kategori "pengulangan manual" ....
sumber
Variabel baru saya beri nama subString dan masukkan string yang ingin Anda cari di beberapa elemen teks. Kemudian menggunakan elemen pilih pemilih Jquery yang Anda butuhkan seperti contoh saya
$("elementsYouNeed")
dan filter oleh.filter()
. Di.filter()
dalamnya akan membandingkan setiap elemen$("elementsYouNeed")
dengan fungsi.Dalam fungsi yang saya gunakan
.toLowerCase()
untuk elemen teks juga subString yang dapat menghindari kondisi case sensitif dan memeriksa apakah ada subString di dalamnya. Setelah itu.filter()
metode membangun objek jQuery baru dari subset elemen yang cocok.Sekarang Anda bisa mendapatkan elemen kecocokan di matchObjects dan melakukan apa pun yang Anda inginkan.
sumber