我正在尝试删除div中的所有空元素并找到一个解决方案但是,它使用CSS3选择器,我很确定它不是跨浏览器。以下是我在FF上的工作:
$("#container *:empty:not(img)").remove();
答案 0 :(得分:1)
......它正在使用CSS3选择器,我很确定它不是跨浏览器。
是的,因为jQuery通过它的Sizzle选择器引擎为你处理; more
如果你想在不使用: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, '') === "") {
答案 1 :(得分:0)
您可以使用jQuery的.text()方法返回每个元素的文本内容并编写条件,例如if ($(this).text().length() < 1) $(this).remove()}
如果没有你的html样本我就不能更具体了。