删除要删除的元素之前的空格?

时间:2016-05-03 15:42:10

标签: javascript jquery html css regex

我删除了<span>内的<p>有时 之前有一个空格,而<span>之后有一个空格,这会在<span>$('span:contains("Name"),span:contains("name"),span:contains("[]"),span:contains("[ ]")').remove();时产生额外的空间剥离出来。注意:我无法更改HTML。

JSFiddle

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="item">Hi <span class="name">User Name</span> , I see you need...</p>
var stream = fs.createReadStream('./tmp_dir/'+files.fileUploaded.name);
var errorCount = 0;
var csvStream = csv.parse({strictColumnHandling: true, headers: true})
.on("data", function(data){
     console.log(data);
}).on("data-invalid", function(){
     console.log("error");
     errorCount += 1;
})    
.on("end", function(){
     console.log("done");
});

stream.pipe(csvStream);

所以我只想在删除范围时删除空格。

4 个答案:

答案 0 :(得分:1)

删除<span></span>后,为<p></p>内容做另一个选择并使用this提示,string = string.replace(/ +/g, ' ');

答案 1 :(得分:0)

删除跨度前后的空格。放入跨度。

<p class="item">Hi<span class="name"> User Name </span>, I see you need...</p>

这会起作用吗?

答案 2 :(得分:0)

用空格替换空格,如下:

var str = "Test One";
str = str.replace(/ /g, '');

答案 3 :(得分:0)

您必须注意使用正则表达式/ .replace方法解决此问题:您可以轻松更换您不想触摸的各种文字。

一种方法可能有点安全&#34;:

  • 找到您要删除的<span>
  • 找到其父元素。
  • 检查它是否被文本节点(nodeType == 3
  • 包围
  • 如果您要删除<span>之前的文本节点,请在nodeValue的末尾修剪空格。
  • 如果元素后面有文本节点,请在其开头修剪空白区域。

尽管如此,我还是不相信你处理HTML的方式和剥离内容将是非常具有前瞻性的......内容的微小变化会带来新的问题。

一个例子(写得清楚,不简洁):

&#13;
&#13;
var spanToRemove = document.querySelector(".nestedSpan");
var spanParent = spanToRemove.parentElement;
var childNodes = spanParent.childNodes;
var childNodesArray = [];

for (var i = 0; i < childNodes.length; i += 1) {
  childNodesArray.push(childNodes[i]);
}

var spanIndex = childNodesArray.indexOf(spanToRemove);
var textBefore = childNodes[spanIndex - 1];
var textAfter = childNodes[spanIndex + 1];

if (textBefore && textBefore.nodeType == 3) {
  // Trims both ends, would be better to just trim right end
  textBefore.nodeValue = textBefore.nodeValue.trim();
}

if (textAfter && textAfter.nodeType == 3) {
  // Trims both ends, would be better to just trim left end
  textAfter.nodeValue = textAfter.nodeValue.trim();
}

spanParent.removeChild(spanToRemove);
&#13;
<p>Text before <span class="nestedSpan"> This gets removed </span> , Text after</p>
&#13;
&#13;
&#13;