使用jQuery抓取文本时如何剥离空格?

Ste*_*rks 181 jquery

我想使用jQuery来封装一个mailto:锚定一个电子邮件地址,但它也抓住了CMS正在生成的空白区域.

这是我必须使用的HTML,我拥有的脚本和输出的副本.

HTML

<div class="field field-type-text field-field-email">
  <div class="field-item">
    name@example.com    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

jQuery JavaScript

$(document).ready(function(){
  $('div.field-field-email .field-item').each(function(){
    var emailAdd = $(this).text();
      $(this).wrapInner('<a href="mailto:' + emailAdd + '"></a>');
   });
 });
Run Code Online (Sandbox Code Playgroud)

生成的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>
Run Code Online (Sandbox Code Playgroud)

虽然我怀疑其他人在阅读这个问题时可能只想剥离领先和拖尾的空白,但我很高兴失去所有的空白,因为它是我正在包装的电子邮件地址.

And*_*ech 330

使用replacejs中的函数:

var emailAdd = $(this).text().replace(/ /g,'');
Run Code Online (Sandbox Code Playgroud)

这将删除所有空格

如果你想删除的开头和结尾的空白使用jQuery的$ .trim方法:

var emailAdd = $.trim($(this).text());
Run Code Online (Sandbox Code Playgroud)

  • 正确但//s/g将是一个更清晰的模式("i"是多余的,''是一种不寻常的形式 - 也是fwiw的模式/(^\s*)|(\ s*$)/ g是相当于修剪. (11认同)
  • 需要注意的一件事是,IE不会将不间断的空格(&nbsp;,&#160;,&#xA0;,\ xA0,\ u00A0等)视为空格,所以/ [\s\xA0] +/g可能更可靠替换所有空白区域. (6认同)

Jha*_*bub 99

Javascript内置修剪:

str.trim()
Run Code Online (Sandbox Code Playgroud)

它在IE8中不起作用.如果您必须支持旧浏览器,请使用TuxmentatPaul的答案.


Tux*_*tat 69

实际上,jQuery有一个内置的trim功能:

 var emailAdd = jQuery.trim($(this).text());
Run Code Online (Sandbox Code Playgroud)

详情请见此处.

  • 因为每个内置功能都必须有一个jQuery包装器 (3认同)

小智 24

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

  • 看起来像/ ^\s + |\s + $/g的任何东西怎么称为"常规"? (5认同)