2011-10-19 14 views
8

私の作者は、空の段落を作成するのは習慣がありません。 (すなわち、同様に、それらの内部は何もありません段落:jQueryで「空の」段落を削除してください

<p></p> 

は、「空」の段落を削除するjQueryの機能がありますここで私が試したものです:。他

$('p').remove(":contains(' ')"); // nope! bad logic, all p's have empty spaces 

$("p:empty").remove() // nope, doesn't work, doesn't remove any p's 

何か私が試してみてください私のために?

答えて

18

$("p:empty").remove()作品(http://jsfiddle.net/AndyE/XwABG/1/でデモ)。あなたの要素が実際には空であり、任意の空白が含まれていないことを確認してください。

することができますfilter()を常にを使用します。

// Trimming white space 
$('p').filter(function() { return $.trim(this.innerHTML) == "" }).remove(); 

// Without trimming white space 
$('p').filter(function() { return this.innerHTML == "" }).remove(); 

の作業のデモ:http://jsfiddle.net/AndyE/XwABG/

+0

ことができ、ユーザー 'this.innerHTML'または' $(この)は.text() ' – Neal

+0

@Neal:パフォーマンスのために 'this.innerHTML'に切り替えました。私の膝の反動反応は通常テキストのために行なわれますが、ブラウザのチェックや再帰が必要です。 –

+0

アンディとニールありがとう。 –

0

使用するすべての段落を反復処理し、空のinnerHTMLプロパティをチェックし、私はこれがうまくいくと思うものを

2

を削除する.each空きスペースがあれば(申し訳ありませんが、段落にスペースがあるかどうか分かりません)

$("p").each(function(){ 
    if ($.trim($(this).text()) == ""){ 
    $this.remove(); 
    } 
}); 
0

あなたは非壊れやすいスペース にアンディの答えを拡張する(そして代わりにjQueryの文字列のトリム()メソッドを使用)したい場合は、あなたが使用することができます:

$('p').filter(function() { 
    return this.innerHTML 
     .replace("&nbsp;"," ") 
     .trim() 
     == "" 
}).remove(); 
0

これは昔ながらのJavaScriptであり、それは非常にです速い:

var paragraphs = document.getElementsByTagName("p"); 
for (var i = 0, len = paragraphs.length; i < len; i++) { 
    var elem = paragraphs[i]; 
    if (elem.childElementCount == 0 && elem.textContent.trim() == '') { 
     elem.parentNode.removeChild(elem); 
     i--; 
     len--; 
    } 
} 
0

[].filter.call(document.getElementsByTagName("p"), function(elem){return elem.childElementCount==0 && elem.textContent.trim()==''}) 
    .forEach(function(elem){elem.parentNode.removeChild(elem)}) 

この1は、さらに高速であります

空の段落では、fireeyedboyのP、その後

ある場合:空のセレクタが移動するための方法である: -

$('p').each(function() { 
    var $this = $(this); 
    if($this.html().replace(/\s|&nbsp;/g, '').length == 0) 
     $this.remove(); 
}); 
関連する問題