DOM ツリーから空のタグをすべて削除しようとしています。Empty は、完全に空 ( のように<a></a>
) といくつかの空白がある ( のように<a> ...</a>
) の両方を意味します。また、内側の空のタグも削除する必要があります。例えば
<p style="text-align:right;"> <a> </a> <a></a></p><p>Hello</p>
去るべき
<p>Hello</p>
空を削除した後も<a> </a> <a></a>
空<p style="text-align:right;"> </p>
が残り、削除する必要があるためです。
私がやっていること:
$.(".container>*:empty").remove();
そして結果は混乱した。私はそのようなコードでデバッグを開始しました:
console.log($.(".container>*:empty").size());
1) 文字列:
Well, though it looks like a paragraph, it's not o_O.
0 (I'm wrapping string in global wrapper .container)
2) 文字列
<a></a><a>Well, though it looks like a paragraph, it's not o_O.</a>
1
3) 文字列
<a> </a><a>Well, though it looks like a paragraph, it's not o_O.</a>
0 (It seems one whitespace makes a non-empty)
4) 文字列
<p> <a></a></p> <a>Well, though it looks like a paragraph, it's not o_O.</a>
0 (<a></a> is not selected as empty (maybe 'cause it's inside of < p>).
Also p is not selected, besides it contains only empty < a>)
私の質問は次のとおりです。
:empty
空のタグと 1-N の空白の両方を選択する方法は?:empty
すべてのオブジェクト内のすべての空のタグを選択する方法は?
私の考えはすることです${"*:empty"}.remove() while $('*:empty').size() > 0
。
アップデート:
do {
$(".container *").filter(function() {
return $.trim(this.innerHTML) === ""
}).remove();
} while ($(".container *").filter(function() {
return $.trim(this.innerHTML) === ""
}).size() > 0)
console.log($(".container").html())
このコードを以下に適用します。
<p> <p> <a> <a> <a><br><hr></a> </p> <a>Well, though it looks like a paragraph, it's not o_O.</a></p>
そして、次のようになります。
<p> <a>Well, though it looks like a paragraph, it's not o_O.</a></p>