come posso rimuovere uno spazio bianco quando afferro il testo con jQuery?


183

Voglio usare jQuery per racchiudere un mailto: anchor attorno a un indirizzo e-mail, ma sta anche afferrando lo spazio bianco che il CMS sta generando.

Ecco l'HTML con cui devo lavorare, lo script come ho e una copia dell'output.

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 generato

<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>

Anche se sospetto che gli altri che leggono questa domanda potrebbero voler eliminare lo spazio bianco iniziale e di coda, sono abbastanza felice di perdere tutto lo spazio bianco considerando che è un indirizzo email che sto avvolgendo.


Risposte:


333

Utilizzare la replacefunzione in js:

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

Ciò rimuoverà tutti gli spazi

Se si desidera rimuovere solo lo spazio bianco iniziale e finale , utilizzare il metodo jQuery $ .trim:

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

11
Corretto ma / \ s / g sarebbe uno schema più chiaro (la "i" è ridondante e la "" è una forma insolita - anche una sequenza di / (^ \ s *) | (\ s * $) / g è equivalente a trim.
annakata il

1
Hai ragione annakata, ho rimosso il / i perché è ridondante poiché la sensibilità del case in questo caso non è un problema
Andreas Grech,

6
Una cosa di cui diffidare è che IE non considera gli spazi non-break (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0, ecc ...) come spazi bianchi, quindi / [ \ s \ xA0] + / g potrebbe essere più affidabile per sostituire tutto lo spazio bianco.
Travis,


69

In realtà, jQuery ha una funzione di ritaglio integrata:

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

Vedi qui per i dettagli.


3
perché ogni funzione integrata deve avere un wrapper jQuery
jasonszhao,

24

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


1
Ciò rimuove gli spazi bianchi iniziali e finali come la funzione di ritaglio PHP.
Paul,

1
puoi spiegarti?
Francisco Corrales Morales,

1
@FranciscoCorralesMorales: penso che tu abbia una scelta qui: scopri le espressioni regolari o no. Se lo fai, l'espressione diventerà evidente e, in caso contrario, sarà difficile da spiegare, quindi è facile da capire. Quindi: scopri le espressioni regolari. Se ancora non capisci dopo aver provato a impararli, fai una domanda specifica su cosa esattamente non capisci.
Peter V. Mørch,

5
Come può essere chiamato "normale" tutto ciò che assomiglia a questo / ^ \ s + | \ s + $ / g?
RyanNerd,

Sono chiamate espressioni regolari perché possono descrivere lingue regolari, lingue che possono essere analizzate usando una macchina a stati finiti. Le espressioni regolari, nella loro forma più pura, sono in realtà un modo per descrivere una macchina a stati finiti. Considerando quanto sia difficile includere un diagramma di un automa nel tuo codice in un modo che il computer possa capire, le espressioni regolari sono piuttosto fantastiche anche se la loro terseness può renderle abbastanza difficili da analizzare per gli umani.
QuantumOmega
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.