2011-09-29 10 views
0

WYSIWYGエディタを使用して新しいWebサイトページを作成するクライアントがあります。問題は、これは非常に私は問題が今ということですJQuery - 機能を改善する

$('p') 
.filter(function() { 
    return $.trim($(this).text()) === '' 
}) 
.remove() 

これらの空のタグを削除するには、ほとんどの機能を書いたレイアウトで大混乱を引き起こしていた

<p>&nbsp;</p> 

いつかWYSIWYGエディタが空のpタグに入れていることです画像がwysiwygエディタに挿入されると、それはapタグに含まれ、私の関数はそれを画面から削除します。

画像を許可するために私の機能を更新することも、空のpタグを検索して削除することもできますか?あなたは、このようなとして削除したいブロックを中心にdivタグを使用して試すことができ、事前に

おかげ

ジェームズ

答えて

2

あなたのフィルタはまた、子要素が存在しないことを確実に作ることができます:

この

$('p').each(function(){ 
    if($(this).html() == "&nbsp;"){ 
     $(this).remove(); 
    } 
}); 

デモについてどう

$('p').filter(function() { 
    var $this = $(this); 
    return !$this.children().length && $.trim($this.text()) === ''; 
}).remove() 
0

。 jQueryステートメントでは、すべての段落の代わりにdiv idを基にして呼び出すことができます。

2

あなたが唯一の子を持たない要素を選択する:empty擬似セレクタを使用することができます。:emptyので、(あなたは空白と何もないとpの要素を持っている場合、彼らは削除されません、しかし

$("p:empty").remove(); 

をテキストノードを子として扱います)。したがって、上記を実行する前に、p要素の空白(.trimを使用)を削除したい場合があります。

あなたの現在の方法の問題点はimgようなタグは、任意のテキストが含まれていないということですので、あなたのfilter関数はimg要素を含むp要素が除去されなければならないと考えています。

1
$('p').not(':has("img")') 
.filter(function() { 
    return $.trim($(this).text()) === '' 
}) 
.remove() 

JS Fiddle demo

1

だけで、WYSIWYGを修正もしそうでなければ、フロントエンドではなくバックエンドで修正してください。

+0

これは実際にはおそらく最も効果的な行動コースです。それはバグです。それを回避するのではなく、ソースで殺すこと。 –

関連する問題