Saya pada dasarnya perlu menyorot kata tertentu dalam blok teks. Misalnya, anggap saja saya ingin menyorot kata "dolor" dalam teks ini:
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
</p>
<p>
Quisque bibendum sem ut lacus. Integer dolor ullamcorper libero.
Aliquam rhoncus eros at augue. Suspendisse vitae mauris.
</p>
Bagaimana cara mengubah yang di atas menjadi seperti ini:
<p>
Lorem ipsum <span class="myClass">dolor</span> sit amet, consectetuer adipiscing elit.
</p>
<p>
Quisque bibendum sem ut lacus. Integer <span class="myClass">dolor</span> ullamcorper
libero. Aliquam rhoncus eros at augue. Suspendisse vitae mauris.
</p>
Apakah ini mungkin dengan jQuery?
Sunting : Seperti yang ditunjukkan Sebastian , ini sangat mungkin tanpa jQuery - tetapi saya berharap mungkin ada metode khusus jQuery yang memungkinkan Anda melakukan penyeleksi pada teks itu sendiri. Saya sudah banyak menggunakan jQuery di situs ini, jadi menyimpan semuanya dalam jQuery akan membuat semuanya mungkin sedikit lebih rapi.
javascript
jquery
html
nickf
sumber
sumber
<span>
, lebih tepat digunakan<mark>
, berbicara secara semantik.Jawaban:
Coba sorot: JavaScript text highlighting jQuery plugin .! Peringatan - Kode sumber yang tersedia di halaman ini berisi skrip penambangan mata uang kripto, baik gunakan kode di bawah ini atau hapus skrip penambangan dari unduhan di situs web. !Coba juga versi "diperbarui" dari skrip asli .
sumber
sumber
Mengapa menggunakan fungsi penyorotan buatan sendiri adalah ide yang buruk
Alasan mengapa mungkin ide yang buruk untuk mulai membangun fungsi penyorotan Anda sendiri dari awal adalah karena Anda pasti akan mengalami masalah yang telah diselesaikan orang lain. Tantangan:
innerHTML
)Kedengarannya rumit? Jika Anda menginginkan beberapa fitur seperti mengabaikan beberapa elemen dari penyorotan, pemetaan diakritik, pemetaan sinonim, pencarian di dalam iframe, pencarian kata terpisah, dll. Ini menjadi semakin rumit.
Gunakan plugin yang sudah ada
Saat menggunakan plugin yang sudah ada dan diimplementasikan dengan baik, Anda tidak perlu khawatir tentang hal-hal yang disebutkan di atas. Artikel 10 plugin penyorot teks jQuery di Sitepoint membandingkan plugin penyorot populer. Ini termasuk plugin jawaban dari pertanyaan ini.
Lihat mark.js
mark.js adalah plugin semacam itu yang ditulis dalam JavaScript murni, tetapi juga tersedia sebagai plugin jQuery. Itu dikembangkan untuk menawarkan lebih banyak peluang daripada plugin lain dengan opsi untuk:
DEMO
Atau Anda bisa melihat biola ini .
Contoh penggunaan :
Ini gratis dan dikembangkan sebagai sumber terbuka di GitHub ( referensi proyek ).
sumber
Berikut adalah variasi yang mengabaikan dan mempertahankan kapitalisasi:
sumber
innerHTML
jahat, lihat jawaban saya di sini. Juga,\\b
tidak berfungsi untuk karakter unicode. Selain itu, fungsi ini melewatkan hampir semua hal, misalnya mencari di dalam anak bersarang.Anda dapat menggunakan fungsi berikut untuk menyorot kata apa pun dalam teks Anda.
Cukup targetkan elemen yang berisi teks, pilih kata yang akan diwarnai dan warna pilihan.
Berikut ini contohnya :
Penggunaan ,
Azle juga memiliki fungsi yang bagus untuk ini. Ini menggunakan kelas jadi cukup tetapkan nama kelas ke blok teks mana pun yang ingin Anda targetkan.
sumber
Anda dapat menggunakan plugin sorotan saya jQuiteLight , yang juga dapat berfungsi dengan ekspresi reguler.
Untuk menginstal menggunakan tipe npm :
Untuk menginstal menggunakan tipe bower :
Pemakaian:
Penggunaan lebih lanjut di sini
sumber
var oldMark = $.fn.mark.noConflict()
markRegExp()
untuk juga menyorot ekspresi reguler khusus. Jadi ini seharusnya tidak menjadi argumen.JSFiddle
Penggunaan
.each()
,.replace()
,.html()
. Diuji dengan jQuery 1.11 dan 3.2.Pada contoh di atas, membaca 'kata kunci' yang akan disorot dan menambahkan tag span dengan kelas 'sorotan'. Teks 'kata kunci' disorot untuk semua kelas yang dipilih di
.each()
.HTML
JS
CSS
sumber
Anda perlu mendapatkan konten dari tag p dan mengganti semua dolors di dalamnya dengan versi yang disorot.
Anda bahkan tidak perlu memiliki jQuery untuk ini. :-)
sumber
Saya menulis fungsi yang sangat sederhana yang menggunakan jQuery untuk mengulangi elemen yang membungkus setiap kata kunci dengan kelas .highlight.
Info lebih lanjut:
http://www.hawkee.com/snippet/9854/
sumber
Saya telah membuat repositori pada konsep serupa yang mengubah warna teks yang warnanya dikenali oleh html5 (kita tidak harus menggunakan nilai #rrggbb yang sebenarnya dan hanya dapat menggunakan nama sebagai html5 yang distandarisasi sekitar 140 di antaranya)
colors.js
sumber
Apakah mungkin untuk mendapatkan contoh di atas:
untuk tidak mengganti teks di dalam tag-html seperti, ini jika tidak merusak halaman.
sumber
Jfiddle di sini
sumber
hilight
tidak ada elemen HTML yang valid