można dopasować elementy z tekstu spacji tylko z ...
$('h2').filter(function() {
return ! $.trim($(this).text());
});
Aby usunąć te elementy, zadzwoń remove()
na zwróconego zestawu.
jsFiddle.
Alternatywnie, bez jQuery ...
elements.filter(function(element) {
return ! (element.textContent || element.innerText).replace(/\s+/g, '');
});
Jeśli Twój elements
jest HTMLCollection
, NodeList
(lub w inny sposób nie jest Array
), użyj Array.filter(elements, fn)
lub włączyć się do elements
Array
z Array.prototype.slice.call(elements)
.
Jeśli nie trzeba było obsługiwać również starszych przeglądarek, można użyć numeru return ! (element.textContent || element.innerText).trim()
.
Aby je usunąć, zapętlić elementy i użyć thisElement.parentNode.removeChild(thisElement)
.
jsFiddle.
Alternatywnie, ze pracuje tylko z węzłami ...
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.
Dlaczego użyłbyś 'filter()' zamiast 'each()'? – alex
'$ .trim()' również nie działa. – alex
Mój błąd, ale jeśli używasz jQuery, możesz równie dobrze używać bezpiecznych narzędzi różnych przeglądarek. Chociaż 'String.prototype.trim()' jest całkiem dobrze wspierane w dzisiejszych czasach. – alex