Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/03/2015, 06:40
Avatar de NueveReinas
NueveReinas
 
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 8 meses
Puntos: 145
Respuesta: Seleccionar texto en un div y subrayar

Después de un buen rato de investigación...

http://jsfiddle.net/vfuamLzh/

Código HTML:
Ver original
  1. <p>Esto texto no se marcará.</p>
  2. <div class="miTexto">Si seleccionas este texto, se marcará.</div>
  3. <span>BLA BLA BLA, aquí no hay marca si lo seleccionas.</span>
  4. <div class="miTexto"><p>Selecciona esto :)</p></div>

Código CSS:
Ver original
  1. /* Esto te marca la selección actual */
  2. *::selection {
  3.     color:black;
  4.     background:red;
  5. }
  6.  
  7. /* Este es el estilo que se le va a agregar al texto seleccionado */
  8. .marca {
  9.     color:black;
  10.     background:yellow;
  11. }

Código Javascript:
Ver original
  1. $(".miTexto").on("mouseup", function (e) { //Importante trabajar con clases y NO con IDs
  2.     var selected = getSelection();
  3.     var range = selected.getRangeAt(0);
  4.     console.log(range);
  5.     if(selected.toString().length >= 1){ //Si se seleccionan uno o más caracteres...
  6.         var newNode = document.createElement("span"); //Crea un span
  7.         newNode.setAttribute("class", "marca"); //Le añade la clase
  8.         range.surroundContents(newNode);      
  9.     }
  10.     selected.removeAllRanges();
  11.  });
  12.  
  13. function getSelection() {
  14.     var seltxt = '';
  15.      if (window.getSelection) {
  16.          seltxt = window.getSelection();
  17.      } else if (document.getSelection) {
  18.          seltxt = document.getSelection();
  19.      } else if (document.selection) {
  20.          seltxt = document.selection.createRange().text;
  21.      }
  22.     else return;
  23.     return seltxt;
  24. }

Espero que sea lo que buscas
__________________
¿Te sirvió la respuesta? Deja un +1