¿Cómo elimino el espacio en blanco al tomar texto con jQuery?


183

Quiero usar jQuery para envolver un mailto: ancla alrededor de una dirección de correo electrónico, pero también está tomando el espacio en blanco que está generando el CMS.

Aquí está el HTML con el que tengo que trabajar, el script tal como lo tengo y una copia de la salida.

HTML

<div class="field field-type-text field-field-email">
  <div class="field-item">
    name@example.com    </div>
</div>

jQuery JavaScript

$(document).ready(function(){
  $('div.field-field-email .field-item').each(function(){
    var emailAdd = $(this).text();
      $(this).wrapInner('<a href="mailto:' + emailAdd + '"></a>');
   });
 });

HTML generado

<div class="field field-type-text field-field-email">
  <div class="field-items"><a href="mailto:%0A%20%20%20%20name@example.com%20%20%20%20">
    name@example.com    </a></div>
</div>

Aunque sospecho que otras personas que lean esta pregunta tal vez quieran eliminar el espacio en blanco inicial y secundario, estoy bastante feliz de perder todo el espacio en blanco considerando que es una dirección de correo electrónico que estoy envolviendo.


Respuestas:


333

Use la replacefunción en js:

var emailAdd = $(this).text().replace(/ /g,'');

Eso eliminará todos los espacios

Si desea eliminar solo los espacios en blanco iniciales y finales , use el método jQuery $ .trim:

var emailAdd = $.trim($(this).text());

11
Correcto, pero / \ s / g sería un patrón más claro (la "i" es redundante y el '' es una forma inusual; también aparece un patrón de / (^ \ s *) | (\ s * $) / g es equivalente a recortar.
annakata

1
Estás en lo correcto annakata, eliminé el / i porque es redundante ya que la sensibilidad a mayúsculas y minúsculas en este caso no es un problema
Andreas Grech

66
Una cosa a tener en cuenta es que IE no considera los espacios que no se rompen (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0, etc.) como espacios en blanco, entonces / [ \ s \ xA0] + / g podría ser más confiable para reemplazar todos los espacios en blanco.
travis


69

En realidad, jQuery tiene una función de recorte incorporada:

 var emailAdd = jQuery.trim($(this).text());

Ver aquí para más detalles.


3
porque cada función incorporada debe tener un contenedor jQuery
jasonszhao

24

str=str.replace(/^\s+|\s+$/g,'');


1
Esto elimina los espacios en blanco iniciales y finales, como la función de recorte de PHP.
Paul

1
puedes explicarte?
Francisco Corrales Morales

1
@FranciscoCorralesMorales: Creo que tienes una opción aquí: aprender sobre expresiones regulares o no. Si lo hace, la expresión se hará evidente, y si no lo hace, será difícil de explicar, por lo que es fácil de entender. Entonces: Aprenda sobre expresiones regulares. Si aún no comprende después de intentar aprenderlos, haga una pregunta específica sobre exactamente lo que no comprende.
Peter V. Mørch

55
¿Cómo se puede llamar "regular" a algo que se parece a esto / ^ \ s + | \ s + $ / g?
RyanNerd el

Se llaman expresiones regulares porque pueden describir lenguajes regulares, lenguajes que pueden analizarse usando una máquina de estados finitos. Las expresiones regulares, en su forma más pura, son de hecho una forma de describir una máquina de estados finitos. Teniendo en cuenta lo difícil que sería incluir un diagrama de un autómata en su código de una manera que la computadora pudiera entender, las expresiones regulares son bastante impresionantes, incluso si su brevedad puede hacer que sea bastante difícil de analizar para los humanos.
QuantumOmega
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.