2011-09-29 20 views
0

我有誰使用所見即所得的編輯器來創建新的網站頁面的客戶端。問題是,有時WYSIWYG編輯器放在空的p標籤JQuery的 - 提高我的功能

<p>&nbsp;</p> 

這是造成混亂的佈局,所以我寫了一個小功能來刪除這些空標籤

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

現在的問題是,當圖像被插入到所見即所得的編輯器得到它的包含在AP標籤和我的功能從屏幕將其刪除。

能要麼我的功能進行更新,以使圖像或我可以搜索並刪除空p標籤???

在此先感謝

詹姆斯

回答

2

你可以讓你的過濾器也確保沒有子元素:

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

您可以嘗試使用要移除諸如塊周圍的div標籤。在您的jQuery的聲明中,你可以調用基於斷DIV ID,而不是所有的段落。

2

可以使用:empty僞選擇,只選擇那些沒有孩子的元素:

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

但是,如果你有p元素與白的空間,沒有別的,他們將不會被刪除(因爲:empty將文本節點視爲孩子)。所以,你可能想在運行上面之前,將您p元素刪除(使用.trim)的空白。

與您當前方法的問題是,像img標籤不包含任何文本,讓您的filter函數認爲只含img元素的p元素應該被刪除。

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

JS Fiddle demo

1

剛剛修復所見即所得,如果是的javascript如果沒有,則修復後端而不是前端。

+0

這是最有可能最好的行動過程中實際。這是一個錯誤;殺死它的源頭而不是解決它。 –