Se puede sincronizar elementos con un espacio en blanco con el único texto ...
$('h2').filter(function() {
return ! $.trim($(this).text());
});
Para eliminar estos elementos, llame remove()
en el conjunto devuelto.
jsFiddle.
Alternativamente, sin jQuery ...
elements.filter(function(element) {
return ! (element.textContent || element.innerText).replace(/\s+/g, '');
});
Si su elements
es una HTMLCollection
, NodeList
(o de lo contrario no un Array
), utilice Array.filter(elements, fn)
o gire elements
en un Array
con Array.prototype.slice.call(elements)
.
Si no tiene que admitir navegadores más antiguos también, puede usar return ! (element.textContent || element.innerText).trim()
.
Para quitar esto, recorra los elementos y use thisElement.parentNode.removeChild(thisElement)
.
jsFiddle.
Por otra parte, con el trabajo con nodos sólo ...
var containsWhitespace = function me(node) {
var childNodes = node.childNodes;
if (childNodes.length == 0) {
return true;
}
for (var i = 0, length = childNodes.length; i < length; i++) {
if (childNodes[i].nodeType == 1) {
return me(childNodes[i]);
} else if (childNodes[i].nodeType == 3) {
return ! childNodes[i].data.replace(/\s+/g, '');
}
}
}
elements.filter(containsWhitespace);
jsFiddle.
¿Por qué usarías 'filter()' en lugar de 'each()'? – alex
'$ .trim()' tampoco funciona así. – alex
Mi error, pero si está utilizando jQuery, también puede usar sus utilidades de seguridad entre navegadores. Aunque 'String.prototype.trim()' está bastante bien soportado hoy en día. – alex