div内のすべての空の要素を削除しようとしていますが、解決策を見つけましたが、CSS3セレクターを使用しており、クロスブラウザーではないと確信しています。これが私がFFに取り組んでいることです:
$("#container *:empty:not(img)").remove();
div内のすべての空の要素を削除しようとしていますが、解決策を見つけましたが、CSS3セレクターを使用しており、クロスブラウザーではないと確信しています。これが私がFFに取り組んでいることです:
$("#container *:empty:not(img)").remove();
... CSS3セレクターを使用しており、クロスブラウザーではないと確信しています。
これは、jQueryがSizzleセレクターエンジンを介してそれを処理するためです。もっと。
を使用せずに実行したい場合は:empty
、かなり単純な再帰関数です(jQueryを使用せず、メモリ内に大きな配列を作成しないようにします)。
function removeEmpties(node) {
var child, sibling;
for (child = node.lastChild; child; child = sibling) {
sibling = child.previousSibling;
switch (child.nodeType) {
case 1: // Element
if (child.nodeName !== "IMG") { // Assumes HTML, not XHTML
removeEmpties(child);
if (!child.firstChild) {
node.removeChild(child);
}
}
break;
case 3: // Text
if (child.nodeValue === "") {
node.removeChild(child);
}
break;
}
}
}
...またはそれらの線に沿った何か。空白のみを含むテキストノードを削除する場合は、次のように変更します。
if (child.nodeValue === "") {
に
if (child.nodeValue.replace(/\s/g, '') === "") {
jQueryの.text()メソッドを使用して、各要素のテキストコンテンツを返し、次のような条件を記述できます。if ($(this).text().length() < 1) $(this).remove()}
あなたのhtmlのサンプルがなければ、私はこれ以上具体的にすることはできません。