2011-09-29 66 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

这是最有可能最好的行动过程中实际。这是一个错误;杀死它的源头而不是解决它。 –