2011-06-23 176 views
14

仍在尋找一種方法從我的html代碼中刪除' ',發現stackoverlow.com上有多少種方法,但這兩種方法都無法工作!刪除' ' - 仍在嘗試

HTML

<p>No Space</p> 
<p>&nbsp;1 Space</p> 
<p>&nbsp;&nbsp;2 Spaces</p> 
<p>&nbsp;&nbsp;&nbsp;3 Spaces</p> 
<p>&nbsp;&nbsp;&nbsp;&nbsp;4 Spaces</p> 

jQuery的

$(document).ready(function() { 

    $('p').text().replace(/ /g, ''); 
    //$('p').html($(this).html().replace(/&nbsp;/gi,'')); 

}); 

的jsfiddle - 遊樂場http://jsfiddle.net/MrTest/hbvjQ/85/

任何幫助非常讚賞。
皮特

+1

也許你的意思是' '不是'&nbsp'。 – Karolis

+0

@卡洛伊斯,@丹尼爾B - 對不起,現在糾正。 – Iladarsda

+0

可能重複[.trim()在JavaScript中不工作在IE](http://stackoverflow.com/questions/2308134/trim-in-javascript-not-working-in-ie) –

回答

25

這人會取代所有的空格字符:

$('p').text(function (i, old) { 
    return old.replace(/\s/g, '') 
}); 

或者,如果你只是想取代非中斷空格:

$('p').text(function (i, old) { 
    return old.replace(/\u00A0/g, '') 
}); 

jsFiddle Demo

我使用closure as a parameter for .text()設置新值。


請注意,HTML實體最後需要關閉;

5

嘗試

​​

,或者如果你想刪除& NBSP嘗試

$('p').each(function() { 
     $(this).html($(this).html().replace('&nbsp;', '')); 
}); 

也請注意,空間&nbsp;而不是& NBSP(你缺少;)

1

您進行更換操作文本,但不適用回來。此外,使用$.trim擺脫的&nbsp;

$('p').text(function(i,e){ 
     return $.trim(e.replace(/ /g, '')); 
    }); 
3

基於bažmegakapa' answer,這可以對元素使用含有其他元素。

$('p').html(function (i, old) { 
    return old.replace(/&nbsp;/g, '') 
}); 

.text()擺脫html元素; .html()

1

這裏有一個非jQuery的答案,因爲使用jQuery這樣的任務是矯枉過正,除非你已經在使用它的網站上的其他內容:

var p = document.getElementsByTagName('p'); 
 

 
Array.prototype.forEach.call(p, function(el) { 
 
    el.innerHTML = el.innerHTML.replace(/&nbsp;/gi, ''); 
 
});
<p>No Space</p> 
 
<p>&nbsp;1 Space</p> 
 
<p>&nbsp;&nbsp;2 Spaces</p> 
 
<p>&nbsp;&nbsp;&nbsp;3 Spaces</p> 
 
<p>&nbsp;&nbsp;&nbsp;&nbsp;4 Spaces</p>