як я знімаю пробіл під час захоплення тексту за допомогою jQuery?


183

Я хочу використовувати jQuery, щоб обернути mailto: прив’язати навколо адреси електронної пошти, але це також захоплює пробіл, який створює 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>

Хоча я підозрюю, що інші, хто читає це запитання, можуть захотіти просто позбавити провідну та хвостову пробіли, я цілком радий втратити всі пробіли, вважаючи, що це електронна адреса, яку я переношу.


Відповіді:


333

Використовуйте replaceфункцію у js:

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

Це видалить усі пробіли

Якщо ви хочете видалити лише пробіли та пробіли , використовуйте метод jQuery $ .trim:

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

11
Правильний, але / \ s / g був би більш чітким малюнком ("i" є зайвим, а "" - незвичайною формою - також fwiw візерунок / (^ \ s *) | (\ s * $) / g є еквівалент обробці.
annakata

1
Ви правильні, Annakata, я видалив / я, оскільки це зайве, оскільки чутливість до справи в цьому випадку не є проблемою
Андреас Греч

6
Варто бути обережним - IE не розглядає нерозривні пробіли (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0 тощо) як пробіли, так / [ \ s \ xA0] + / g може бути більш надійним для заміни всього пробілу.
travis

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.
Павло

1
ви можете пояснити себе?
Франциско Корралес Моралес

1
@FranciscoCorralesMorales: Я думаю, у вас тут є вибір: дізнайтеся про регулярні вирази чи ні. Якщо ви це зробите, вираз стане зрозумілим, і якщо ви цього не зробите, важко пояснити, тому його легко зрозуміти. Отже: Дізнайтеся про регулярні вирази. Якщо ви все ще не розумієте, намагаючись навчитися їх, задайте конкретний питання про те, що саме ви не розумієте.
Пітер В. Морч

5
Як можна щось, що виглядає так / ^ \ s + | \ s + $ / g, назвати "регулярним"?
RyanNerd

Їх називають регулярними виразами, оскільки вони можуть описувати регулярні мови, мови, які можна розбирати за допомогою машини з кінцевим станом. Регулярні вирази, в їх найчистішому вигляді, насправді є способом опису машини з кінцевим станом. Зважаючи на те, як важко було б включити схему автомата у свій код таким чином, щоб комп'ютер міг зрозуміти, регулярні вирази досить приголомшливі, навіть якщо їх терміновість може зробити їх досить важкими для розбору для людей.
QuantumOmega
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.