Básicamente, necesito resaltar una palabra en particular en un bloque de texto. Por ejemplo, imagina que quiero resaltar la palabra "dolor" en este texto:
<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>
¿Cómo convierto lo anterior en algo como esto?
<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>
¿Es esto posible con jQuery?
Editar : como señaló Sebastian , esto es bastante posible sin jQuery, pero esperaba que hubiera un método especial de jQuery que le permitiera hacer selectores en el texto en sí. Ya estoy usando jQuery en gran medida en este sitio, por lo que mantener todo envuelto en jQuery haría las cosas quizás un poco más ordenadas.
javascript
jquery
html
nickf
fuente
fuente
<span>
, es más correcto usarlo<mark>
, hablando semánticamente.Respuestas:
Intente resaltar: texto de JavaScript que resalta el complemento jQuery .! Advertencia: el código fuente disponible en esta página contiene un script de minería de criptomonedas, use el código a continuación o elimine el script de minería de la descarga en el sitio web. !Pruebe también la versión "actualizada" del script original .
fuente
fuente
Por qué usar una función de resaltado hecha por uno mismo es una mala idea
La razón por la que probablemente sea una mala idea comenzar a construir su propia función de resaltado desde cero es porque seguramente se encontrará con problemas que otros ya han resuelto. Desafíos:
innerHTML
)¿Suena complicado? Si desea algunas funciones como ignorar algunos elementos de resaltado, mapeo de diacríticos, mapeo de sinónimos, búsqueda dentro de iframes, búsqueda de palabras separadas, etc., esto se vuelve cada vez más complicado.
Usar un complemento existente
Al utilizar un complemento existente y bien implementado, no tiene que preocuparse por las cosas mencionadas anteriormente. El artículo 10 complementos de resaltador de texto de jQuery en Sitepoint compara los complementos de resaltador populares. Esto incluye complementos de respuestas a esta pregunta.
Eche un vistazo a mark.js
mark.js es un complemento escrito en JavaScript puro, pero también está disponible como complemento jQuery. Fue desarrollado para ofrecer más oportunidades que los otros complementos con opciones para:
MANIFESTACIÓN
Alternativamente, puede ver este violín .
Ejemplo de uso :
Es gratis y está desarrollado de código abierto en GitHub ( referencia del proyecto ).
fuente
Aquí hay una variación que ignora y conserva el caso:
fuente
innerHTML
es malvado, mira mi respuesta aquí. Además,\\b
no funciona con caracteres Unicode. Además, esta función omite casi todo, por ejemplo, buscar dentro de los niños anidados.Puede utilizar la siguiente función para resaltar cualquier palabra en su texto.
Simplemente apunte al elemento que contiene el texto, eligiendo la palabra a colorear y el color de su elección.
He aquí un ejemplo :
el uso ,
Azle también tiene una buena función para esto. Utiliza clases, así que simplemente asigne un nombre de clase a cualquier bloque de texto que desee apuntar.
fuente
Puede usar mi complemento de resaltado jQuiteLight , que también puede funcionar con expresiones regulares.
Para instalar usando el tipo npm :
Para instalar usando el tipo de bower :
Uso:
Uso más avanzado aquí
fuente
var oldMark = $.fn.mark.noConflict()
markRegExp()
para resaltar también expresiones regulares personalizadas. Entonces esto no debería ser un argumento.JSFiddle
Utiliza .each (), .replace (), .html (). Probado con jQuery 1.11 y 3.2.
En el ejemplo anterior, lee la 'palabra clave' para resaltarla y agrega la etiqueta span con la clase 'resaltar'. El texto 'palabra clave' se resalta para todas las clases seleccionadas en .each ().
HTML
JS
CSS
fuente
Necesita obtener el contenido de la etiqueta p y reemplazar todos los dolors con la versión resaltada.
Ni siquiera necesitas tener jQuery para esto. :-)
fuente
Escribí una función muy simple que usa jQuery para iterar los elementos que envuelven cada palabra clave con una clase .highlight.
Más información:
http://www.hawkee.com/snippet/9854/
fuente
He creado un repositorio con un concepto similar que cambia los colores de los textos cuyos colores son reconocidos por html5 (no tenemos que usar valores #rrggbb reales y podríamos usar los nombres como html5 estandarizado alrededor de 140 de ellos)
colors.js
fuente
¿Es posible obtener este ejemplo anterior?
no reemplazar el texto dentro de las etiquetas html como, de lo contrario, esto rompe la página.
fuente
Jfiddle aquí
fuente
hilight
no es un elemento HTML válido