2012-04-11 2 views
3

나는 이와 같이 html을 가지고 있습니다.이미지가있는 표의 공백을 제거

<td id="foo"> 
    <img src="foo.png" /> <img src="foo.png" /> <img src="foo.png" />&nbsp; 
</td> 

html로 위의 공백을 포함하고 또한 &nbsp;,
내가 jQuery를 사용하는 것을 제거 할.
어떻게 수행하나요?

이미이 스크립트로 시도했지만 작동하지 않습니다.

$('#foo').text().replace(/ /g,''); 
+1

가능성이있는 dup http://stackoverflow.com/questions/1539367/remove-whitespace-and-line-breaks-between-html-elements-using-jquery – elclanrs

답변

1

은 당신이 평범한 공간이 어쩌면 같은

var nodes = $("#foo").contents().filter(function() { 
    return this.nodeType == 3 && /^(\s|&nbsp;)*$/.test(this.nodeValue); 
}).remove(); 

//console.log($("#foo").html()); 

뭔가 그 모든 textNodes을 필터링 한 후 내용을()를 사용하고 필요가 있다고 생각? 당신은 단지 이미지를 가지고 있다면 당신은 단지, 내가 지금 공간을 찾고   편집 한

부분 && this.data == " " jsfiddle 테스트를 제거 할 수 있습니다 http://jsfiddle.net/Rurn2/

+0

은 공백 문자로만 작동하지만,   – GusDeCooL

+0

은 약간 변경되었습니다. 지금 새 코드를 사용해보십시오. – voigtan

+0

공백을 원할 경우 + html 공백과 개행을 제거하려는 경우 줄 바꿈 :'/^(\ s |   | \ n) * \ /'을 정규 표현식에 추가 할 수도 있습니다. 예를 들어   \ n 지금 제거되었습니다. – voigtan

0

시도해 보셨습니까? $('#foo').html($('#foo').html().replace(/ /g,''));? 코드는 요소의 텍스트를 기반으로 공백이없는 문자열을 반환합니다. 그러나 요소의 텍스트를 덮어 쓰려면 중괄호 사이에 새 문자열을 입력해야합니다.

+1

작동하지 않음, 이미 테스트 함 – GusDeCooL

+1

제거 할 수 없습니다. innerHTML의 모든 공백은 HTML 태그 내부의 공백을 제거하기 때문에 발생합니다. – jfriend00

+0

틈새, 그 공백을 잊어 버렸습니다. D ... 어리석은. html 엔티티와 일치하는 다른 답변을 사용하거나 임시 요소 ('document.createElement')를 만들고 html로 채워서 엔티티가 공백으로 변환되도록하고 해당 파싱 된 문자열을 사용하는 것이 좋습니다. 그것은 조금 더 많은 코드가 필요하지만, 일반적으로 HTML 엔티티를 디코딩/인코딩하는 더 안전한 방법입니다. 원하는 것이 모두 ' '이면, jfriend00이 제공하는 대답은 괜찮습니다. –

0

이 시도 :

var html = '>' + $('#foo').html() + '<'; 
html = html.replace(/&nbsp;/g, '').replace(/>\s+</gm, '><'); 
$('#foo').html(html.substring(1, html.length-1)); 
+0

이 이미 포함되어 있습니다. – voigtan

+0

공백으로 만 작업 할 수 있으며,   – OammieR

+0

이 작업을 수행 할 수 있습니다 이는 HTML 태그 내부에서 공백을 제거하기 때문입니다. – jfriend00

0

가장 안전한 방법이다 모든 텍스트 노드를 찾아 nodeValue를 찾고자하는 것과 정확하게 비교하고 공백 만 포함하는 노드를 제거하십시오. innerHTML에 대한 작업을 직접 수행하는 것은 어려우므로 실제 태그 (예 : 공백이 있어야 함) 내에있는 것을 엉망으로 만들지 않아야합니다. 텍스트 노드에서 작동하는 것은 브라우저를 사용하여 사용자를 안전하게 유지하는 것입니다. http://jsfiddle.net/jfriend00/RNTbT/

참고로,이 버전도 공백 및 &nbsp;의 조합 텍스트 노드를 처리합니다 :

$("#foo").contents().filter(function() { 
    if (this.nodeType == 3) { 
     return(this.nodeValue.replace(/\s|&nbsp;/g, "") == ""); 
    } 
    return(false); 
}).remove();​ 

당신이 여기서 일 볼 수 있습니다 :이처럼 조건에 일치하는 모든 텍스트 노드를 찾을 수 있습니다 . 모든 공백을 제거하고 &nbsp;을 제거한 다음 아무것도 남아 있는지 확인합니다. 그렇지 않으면 공백 문자 만있는 텍스트 노드이므로 제거해야합니다.

관련 문제