J'ai essentiellement besoin de mettre en évidence un mot particulier dans un bloc de texte. Par exemple, faites comme si je voulais mettre en évidence le mot «dolor» dans ce texte:
<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>
Comment puis-je convertir ce qui précède en quelque chose comme ceci:
<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>
Est-ce possible avec jQuery?
Edit : Comme l'a souligné Sebastian , c'est tout à fait possible sans jQuery - mais j'espérais qu'il pourrait y avoir une méthode spéciale de jQuery qui vous permettrait de faire des sélecteurs sur le texte lui-même. J'utilise déjà beaucoup jQuery sur ce site, donc garder tout enveloppé dans jQuery rendrait les choses peut-être un peu plus ordonnées.
javascript
jquery
html
nickf
la source
la source
<span>
, il est plus correct d'utiliser<mark>
, sémantiquement parlant.Réponses:
Essayez la mise en évidence: texte JavaScript mettant en évidence le plugin jQuery .! Avertissement - Le code source disponible sur cette page contient un script d'extraction de devises cryptographiques, utilisez le code ci-dessous ou supprimez le script d'extraction du téléchargement sur le site Web. !Essayez également la version "mise à jour" du script d'origine .
la source
la source
Pourquoi utiliser une fonction de mise en évidence personnalisée est une mauvaise idée
La raison pour laquelle c'est probablement une mauvaise idée de commencer à créer votre propre fonction de mise en évidence à partir de zéro est que vous rencontrerez certainement des problèmes que d'autres ont déjà résolus. Défis:
innerHTML
)Cela semble compliqué? Si vous voulez certaines fonctionnalités comme ignorer certains éléments de la mise en évidence, le mappage des signes diacritiques, le mappage de synonymes, la recherche dans les iframes, la recherche de mots séparés, etc., cela devient de plus en plus compliqué.
Utiliser un plugin existant
Lorsque vous utilisez un plugin existant et bien implémenté, vous n'avez pas à vous soucier des choses nommées ci-dessus. L'article 10 des plugins de surligneur de texte jQuery sur Sitepoint compare les plugins de surligneur populaires. Cela inclut des plugins de réponses à cette question.
Jetez un œil à mark.js
mark.js est un tel plugin qui est écrit en JavaScript pur, mais qui est également disponible en tant que plugin jQuery. Il a été développé pour offrir plus d'opportunités que les autres plugins avec des options pour:
DEMO
Alternativement, vous pouvez voir ce violon .
Exemple d'utilisation :
C'est gratuit et développé en open-source sur GitHub ( référence du projet ).
la source
Voici une variante qui ignore et préserve la casse:
la source
innerHTML
est le mal, voyez ma réponse ici. De plus,\\b
ne fonctionne pas pour les caractères Unicode. De plus, cette fonction manque presque tout, par exemple la recherche à l'intérieur des enfants imbriqués.Vous pouvez utiliser la fonction suivante pour mettre en évidence n'importe quel mot de votre texte.
Ciblez simplement l'élément qui contient le texte, en choisissant le mot à coloriser et la couleur de votre choix.
Voici un exemple :
Utilisation ,
Azle a également une fonction intéressante pour cela. Il utilise des classes donc attribuez simplement un nom de classe à n'importe quel bloc de texte que vous souhaitez cibler.
la source
Vous pouvez utiliser mon plugin de surbrillance jQuiteLight , qui peut également fonctionner avec des expressions régulières.
Pour installer en utilisant type npm :
Pour installer à l'aide du bower type de :
Usage:
Utilisation plus avancée ici
la source
var oldMark = $.fn.mark.noConflict()
markRegExp()
pour mettre également en évidence les expressions régulières personnalisées. Cela ne devrait donc pas être un argument.JSFiddle
Utilisations
.each()
,.replace()
,.html()
. Testé avec jQuery 1.11 et 3.2.Dans l'exemple ci-dessus, lit le «mot-clé» à mettre en évidence et ajoute la balise span avec la classe «highlight». Le texte «mot-clé» est mis en surbrillance pour toutes les classes sélectionnées dans le
.each()
.HTML
JS
CSS
la source
Vous devez obtenir le contenu de la balise p et remplacer tous les dolors par la version en surbrillance.
Vous n'avez même pas besoin d'avoir jQuery pour cela. :-)
la source
J'ai écrit une fonction très simple qui utilise jQuery pour itérer les éléments enveloppant chaque mot-clé avec une classe .highlight.
Plus d'informations:
http://www.hawkee.com/snippet/9854/
la source
J'ai créé un référentiel sur un concept similaire qui change les couleurs des textes dont les couleurs sont reconnues par html5 (nous n'avons pas à utiliser les valeurs réelles #rrggbb et pourrions simplement utiliser les noms comme html5 normalisé environ 140 d'entre eux)
colors.js
la source
Est-il possible d'obtenir cet exemple ci-dessus:
ne pas remplacer le texte à l'intérieur des balises html comme, sinon, cela brise la page.
la source
Jfiddle ici
la source
hilight
n'est pas d'élément HTML valide