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,'');
4

4 に答える 4

1

contents() を使用してから、プレーン スペースであるすべての textNodes を除外する必要があると思います

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

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

そのようなものでしょうか?画像しかない場合は、&& this.data == " "一部を削除できます

スペースを探して編集しましたが、jsfiddle テスト: http://jsfiddle.net/Rurn2/

于 2012-04-11T07:33:12.147 に答える
0

これを試して:

var html = '>' + $('#foo').html() + '<';
html = html.replace(/&nbsp;/g, '').replace(/>\s+</gm, '><');
$('#foo').html(html.substring(1, html.length-1));
于 2012-04-11T07:46:52.900 に答える
0

最も安全な方法は、すべてのテキスト ノードを見つけて、それらの nodeValue を探しているものと正確に比較し、空白のみを含むものを削除することです。実際のタグ内のもの (たとえば、そこにあるはずの空白) を台無しにしないようにする必要があるため、innerHTML で直接操作を行うのは困難を伴います。テキストノードでの操作は、ブラウザのみを使用して安全を保ちます。次のように、条件に一致するすべてのテキスト ノードを見つけることができます。

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

ここで動作することがわかります: http://jsfiddle.net/jfriend00/RNTbT/

参考までに、このバージョンでは、空白と&nbsp;. すべての空白を削除してから&nbsp;、何か残っているかどうかを確認することで機能します。そうでない場合は、空白のみのテキスト ノードであるため、削除する必要があります。

于 2012-04-11T07:48:12.727 に答える
0

これを試しましたか: $('#foo').html($('#foo').html().replace(/ /g,''));? コードは、要素内のテキストに基づいて、空白のない文字列を返します。ただし、要素のテキストを上書きする場合は、中かっこの間に新しい文字列を入力する必要があります。

于 2012-04-11T07:24:14.160 に答える