2008-12-11 15 views
166

Ich möchte jQuery verwenden, um einen mailto: Anker um eine E-Mail-Adresse zu wickeln, aber es greift auch den vom CMS generierten Freiraum auf.Wie entferne ich Leerraum, wenn ich Text mit jQuery entpacke?

Hier ist der HTML, mit dem ich arbeiten muss, das Skript, wie ich es habe und eine Kopie der Ausgabe.

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>'); 
    }); 
}); 

generierte HTML

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

Obwohl ich vermute, dass andere diese Frage lesen möchten vielleicht nur die führenden Streifen und Leerzeichen holend, I Ich bin ziemlich glücklich, alle Whitespaces zu verlieren, wenn man bedenkt, dass es sich um eine E-Mail-Adresse handelt Verpackung.

+0

Mögliche Duplikat: https://stackoverflow.com/questions/10800355/remove-whitespaces-inside-a-string-in-javascript –

Antwort

308

Verwenden Sie die replace Funktion in js:

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

, dass alle Räume

entfernen, wenn Sie die vorderen und hinteren Leerzeichen nur, verwenden Sie die jQuery .trim Methode $ entfernen möchten:

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

Korrekt, aber/\ s/g wäre ein klareres Muster (das "i" ist redundant und die '' ist eine ungewöhnliche Form - auch fwiw ein Muster von/(^ \ s *) | (\ s * $)/g ist gleichbedeutend mit trimmen. – annakata

+1

Sie sind richtig annakata, ich entfernte das/i, weil es ist redundant, da die Groß-/Kleinschreibung in diesem Fall kein Problem darstellt. –

+6

Eine Sache, die zu beachten ist, ist, dass der IE nicht schussfreie Leerzeichen ( , ,  , \ xA0, \ u00A0 usw.) als weiß- Leerzeichen, also/[\ s \ xA0] +/g könnte zuverlässiger sein, wenn Sie alle Leerzeichen ersetzen möchten – travis

63

Eigentlich hat jQuery in eine Trimm-Funktion aufgebaut:

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

Weitere Informationen finden Sie unter here.

+4

nur Ende und Anfang ... – worenga

+0

Dies ist nicht möglich rk, es ist nur Anfang und Ende –

+3

, weil jedes eingebaute Feature einen jQuery-Wrapper haben muss – jasonszhao

24

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

+1

Dies entfernt führende und nachfolgende Leerzeichen wie die PHP-Trim-Funktion. – Paul

+1

können Sie sich erklären? –

+1

@FranciscoCorralesMorales: Ich denke, du hast die Wahl hier: Lerne über reguläre Ausdrücke oder nicht. Wenn Sie das tun, wird der Ausdruck offensichtlich, und wenn Sie es nicht tun, wird es schwer zu erklären sein, so dass es leicht zu verstehen ist. Also: Erfahren Sie mehr über reguläre Ausdrücke.Wenn Sie immer noch nicht verstehen, nachdem Sie versucht haben, sie zu lernen, stellen Sie eine spezifische Frage über genau das, was Sie nicht verstehen. –

85

Javascript hat in trim gebaut:

str.trim() 

Es in IE8 funktioniert nicht. Wenn Sie ältere Browser unterstützen müssen, verwenden Sie Tuxmentat's oder Paul's beantworten.

+0

Großartig für Node. – JustGage

Verwandte Themen