jQuery ile metin kaparken beyaz boşluk nasıl şerit?


183

Bir mailto: çapa bir e-posta adresi etrafında sarmak için jQuery kullanmak istiyorum, ama aynı zamanda CMS ürettiği beyaz boşluk kapma.

İşte çalışmak zorunda olduğum HTML, sahip olduğum komut dosyası ve çıktının bir kopyası.

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

Oluşturulan HTML

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

Bu soruyu okuyan diğerlerinin sadece önde gelen ve kuyruklu boşlukları soymak isteyebileceğinden şüphelenmeme rağmen, kaydırdığım bir e-posta adresi olduğunu düşünerek tüm boşlukları kaybetmekten oldukça mutluyum.


Yanıtlar:


333

replaceJs fonksiyonunu kullanın :

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

Bu tüm alanları kaldıracak

Eğer lider ve sondaki boşluk kaldırmak istiyorsanız sadece , jQuery $ .trim yöntemi kullanın:

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

11
Doğru ancak / \ s / g daha net bir desen olur ("i" gereksizdir ve '' alışılmadık bir formdur - ayrıca / (^ \ s *) | (\ s * $) / g Döşeme eşdeğerdir.
annakata

1
Doğru annakata, / i kaldırdım çünkü bu durumda büyük / küçük harf duyarlılığı bir sorun değil
Andreas Grech

6
Dikkat edilmesi gereken bir şey IE'nin kırılmayan boşlukları (& nbsp ;, & # 160A, & # xA0 ;, \ xA0, \ u00A0, vb ...) beyaz boşluk olarak görmemesidir, bu nedenle / [ \ s \ xA0] + / g tüm beyaz boşlukları değiştirmek için daha güvenilir olabilir.
travis


69

Aslında, jQuery yerleşik bir kırpma fonksiyonuna sahiptir:

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

Ayrıntılar için buraya bakın.


3
çünkü her yerleşik özellik bir jQuery
sarıcıya

24

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


1
Bu, PHP kırpma işlevi gibi önde gelen ve arkadaki boşlukları kaldırır.
Paul

1
kendini açıklayabilir misin
Francisco Corrales Morales

1
@FranciscoCorralesMorales: Sanırım burada bir seçeneğiniz var: Normal ifadeler hakkında bilgi edinin ya da edinmeyin. Eğer yaparsanız, ifade kendiliğinden anlaşılır hale gelecektir ve eğer yapmazsanız açıklamak zor olacaktır, bu yüzden anlaşılması kolaydır. Yani: Normal ifadeler hakkında bilgi edinin. Onları öğrenmeye çalıştıktan sonra hala anlamadıysanız, tam olarak anlamadığınız şey hakkında belirli bir soru sorun.
Peter V.Mørch

5
Buna benzer bir şeye / ^ \ s + | \ s + $ / g nasıl "normal" olarak adlandırılabilir?
RyanNerd

Düzenli ifadeler olarak adlandırılırlar çünkü düzenli dilleri, sonlu durum makinesi kullanılarak ayrıştırılabilen dilleri tanımlayabilirler. Düzenli ifadeler, en saf haliyle, aslında bir sonlu-durum makinesini tarif etmenin bir yoludur. Bilgisayarınıza anlayabileceği şekilde kodunuza bir otomat diyagramı eklemenin ne kadar zor olacağını göz önünde bulundurursak, düzenli ifadeleri, insanlar için ayrıştırmayı oldukça zorlaştırabilse bile, düzenli ifadeler oldukça harika.
QuantumOmega
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.