1

div内のすべての空の要素を削除しようとしていますが、解決策を見つけましたが、CSS3セレクターを使用しており、クロスブラウザーではないと確信しています。これが私がFFに取り組んでいることです:

$("#container *:empty:not(img)").remove();
4

2 に答える 2

1

... 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, '') === "") {

実例| ソース

于 2012-12-13T11:46:24.063 に答える
0

jQueryの.text()メソッドを使用して、各要素のテキストコンテンツを返し、次のような条件を記述できます。if ($(this).text().length() < 1) $(this).remove()}

あなたのhtmlのサンプルがなければ、私はこれ以上具体的にすることはできません。

于 2012-12-13T11:53:06.960 に答える