ฉันจะตัดพื้นที่สีขาวเมื่อจับข้อความด้วย jQuery ได้อย่างไร


183

ฉันต้องการที่จะใช้ jQuery เพื่อห่อจดหมายไว้: ยึดไว้กับที่อยู่อีเมล แต่ก็ยังคว้าพื้นที่สีขาวที่ CMS กำลังสร้างอยู่

นี่คือ HTML ที่ฉันต้องใช้งานสคริปต์ที่ฉันมีและสำเนาของผลลัพธ์

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

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

แม้ว่าฉันสงสัยว่าคนอื่นที่อ่านคำถามนี้อาจต้องการแค่ตัดช่องว่างนำหน้าและท้ายสุด แต่ฉันยินดีที่จะสูญเสียพื้นที่ว่างทั้งหมดเนื่องจากเป็นที่อยู่อีเมลที่ฉันต้องการ


ซ้ำซ้อนที่เป็นไปได้: stackoverflow.com/questions/10800355/…
The Dev ที่ไม่รู้จัก

คำตอบ:


333

ใช้replaceฟังก์ชั่นใน js:

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

ที่จะลบช่องว่างทั้งหมด

หากคุณต้องการลบช่องว่างนำหน้าและต่อท้ายเท่านั้นให้ใช้เมธอด jQuery $ .trim:

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

11
ถูกต้อง แต่ / \ s / g จะเป็นรูปแบบที่ชัดเจน ("i" ซ้ำซ้อนและ '' เป็นรูปแบบที่ผิดปกติ - นอกจากนี้ยังมีรูปแบบของ / (^ \ s *) | (\ s * $) / g คือ เทียบเท่ากับการตัดแต่ง
annakata

1
คุณถูกต้อง annakata ฉันลบ the / i เนื่องจากซ้ำซ้อนเนื่องจากความไวของตัวพิมพ์เล็กในกรณีนี้ไม่ใช่ปัญหา
Andreas Grech

6
สิ่งหนึ่งที่ต้องระวังคือ IE ไม่พิจารณาช่องว่างที่ไม่แตก (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0, ฯลฯ ... ) เป็น white-space ดังนั้น / [ \ s \ xA0] + / g อาจเชื่อถือได้มากกว่าสำหรับแทนที่ white-space ทั้งหมด
รวิส

100

Javascript ได้สร้างขึ้นในการตกแต่ง:

str.trim()

มันไม่ทำงานใน IE8 หากคุณต้องสนับสนุนเบราว์เซอร์รุ่นเก่าให้ใช้คำตอบของTuxmentatหรือPaul


69

ที่จริงแล้ว jQuery มีฟังก์ชั่นการตกแต่ง:

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

ดูรายละเอียดที่นี่


3
เพราะคุณสมบัติทุกอย่างที่มีในตัวจะต้องมีเครื่องห่อหุ้ม jQuery
jasonszhao

24

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


1
สิ่งนี้จะลบพื้นที่สีขาวที่นำหน้าและต่อท้ายเช่นฟังก์ชันตัดแต่ง PHP
Paul

1
คุณอธิบายตัวเองได้ไหม
Francisco Corrales Morales

1
@FranciscoCorralesMorales: ฉันคิดว่าคุณมีทางเลือกที่นี่: เรียนรู้เกี่ยวกับการแสดงออกปกติหรือไม่ ถ้าคุณทำเช่นนั้นการแสดงออกจะชัดเจนในตัวเองและถ้าคุณทำไม่ได้มันจะยากที่จะอธิบายดังนั้นมันจึงเป็นเรื่องง่ายที่จะเข้าใจ ดังนั้น: เรียนรู้เกี่ยวกับนิพจน์ทั่วไป หากคุณยังไม่เข้าใจหลังจากพยายามเรียนรู้ถามคำถามเฉพาะเกี่ยวกับสิ่งที่คุณไม่เข้าใจ
Peter V. Mørch

5
อะไรที่มีลักษณะเช่นนี้ / ^ \ s + | \ s + $ / g เรียกว่า "ปกติ" ได้อย่างไร
RyanNerd

พวกเขาเรียกว่าการแสดงออกปกติเพราะพวกเขาสามารถอธิบายภาษาปกติภาษาที่สามารถแยกวิเคราะห์โดยใช้เครื่อง จำกัด รัฐ การแสดงออกปกติในรูปแบบบริสุทธิ์ของพวกเขาในความเป็นจริงเป็นวิธีที่จะอธิบายเครื่อง จำกัด รัฐ พิจารณาว่ามันยากแค่ไหนที่จะรวมไดอะแกรมของหุ่นยนต์ในรหัสของคุณในแบบที่คอมพิวเตอร์สามารถเข้าใจได้การแสดงออกปกตินั้นยอดเยี่ยมมากแม้ว่าความทรหดของพวกเขาจะทำให้พวกเขาแยกวิเคราะห์ได้ยาก
QuantumOmega
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.