como retiro o espaço em branco ao capturar texto com o jQuery?

183

Eu estou querendo usar o jQuery para envolver um mailto: anchor em torno de um endereço de email, mas também está pegando o espaço em branco que o CMS está gerando.

Aqui está o HTML com o qual tenho que trabalhar, o script como o tenho e uma cópia da saída.

HTML

<div class="field field-type-text field-field-email">
  <div class="field-item">
    [email protected]    </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 gerado

<div class="field field-type-text field-field-email">
  <div class="field-items"><a href="mailto:%0A%20%20%20%[email protected]%20%20%20%20">
    [email protected]    </a></div>
</div>

Embora eu suspeite que outras pessoas que estão lendo esta pergunta possam querer apenas remover o espaço em branco inicial e final, fico feliz em perder todo o espaço em branco, considerando que é um endereço de e-mail que estou inserindo.

Steve Perks
fonte
Possível duplicata: stackoverflow.com/questions/10800355/…
The Unknown Dev

Respostas:

333

Use a replacefunção em js:

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

Isso removerá todos os espaços

Se você deseja remover apenas os espaços em branco à esquerda e à direita , use o método jQuery $ .trim:

var emailAdd = $.trim($(this).text());
Andreas Grech
fonte
11
Correto, mas / \ s / g seria um padrão mais claro (o "i" é redundante e o '' é uma forma incomum - e também um padrão de / (^ \ s *) | (\ s * $) / g é equivalente a trim.
annakata
1
Você está annakata correta, eu removi o / i porque é redundante, pois a sensibilidade caso, neste caso, não é um problema
Andreas Grech
6
Uma coisa a ser cautelosa é que o IE não considera espaços sem quebra (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0, etc ...) como espaço em branco, então / [ \ s \ xA0] + / g pode ser mais confiável para substituir todo o espaço em branco.
travis
100

Javascript foi construído em guarnição:

str.trim()

Não funciona no IE8. Se você precisar dar suporte a navegadores antigos, use a resposta do Tuxmentat ou do Paul .

Jhankar Mahbub
fonte
69

Na verdade, o jQuery possui uma função de corte integrada:

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

Veja aqui para detalhes.

Tuxmentat
fonte
3
porque toda construída no recurso deve ter um invólucro jQuery
jasonszhao
24

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

Paulo
fonte
1
Isso remove os espaços em branco iniciais e finais, como a função de ajuste do PHP.
Paul
1
você pode se explicar?
Francisco Corrales Morales
1
@FranciscoCorralesMorales: Acho que você tem uma escolha aqui: aprenda sobre expressões regulares ou não. Se o fizer, a expressão se tornará auto-evidente e, se não o fizer, será difícil de explicar, por isso é fácil de entender. Então: Aprenda sobre expressões regulares. Se você ainda não entender depois de tentar aprendê-los, faça uma pergunta específica sobre exatamente o que você não entende.
Peter V. Mørch
5
Como algo que se parece com isso / ^ \ s + | \ s + $ / g pode ser chamado de "regular"?
precisa saber é o seguinte
Eles são chamados de expressões regulares porque podem descrever linguagens regulares, linguagens que podem ser analisadas usando uma máquina de estado finito. Expressões regulares, em sua forma mais pura, são de fato uma maneira de descrever uma máquina de estados finitos. Considerando o quão difícil seria incluir um diagrama de um autômato no seu código de uma maneira que o computador pudesse entender, as expressões regulares são bastante impressionantes, mesmo que sua concisão possa torná-las bastante difíceis de analisar para humanos.
QuantumOmega