删除jQuery的所有空元素(保留img标签)
问题描述:
我想删除div中的所有空元素,并找到了解决方案,但是,它使用CSS3选择器,我很确定它不是跨浏览器。这里是我工作的FF:删除jQuery的所有空元素(保留img标签)
$("#container *:empty:not(img)").remove();
答
...它使用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, '') === "") {
答
您可以使用jQuery的的.text()方法返回的每个元素的文本内容,并写了条件,如if ($(this).text().length() < 1) $(this).remove()}
没有你的HTML的样本,我不能更具体。