我可以轻松删除没有空格的标记......
$('h2:empty').remove();
但是,当有空间时......
<h2> </h2>
......这不起作用。
我试过
if ($('h2').html() == " "){
$('h2').remove();
}
也没有运气。有人可以帮忙吗?
答案 0 :(得分:15)
您可以将仅包含空白文本的元素与...匹配
$('h2').filter(function() {
return ! $.trim($(this).text());
});
要删除这些元素,请在返回的集上调用remove()
。
或者,没有jQuery ......
elements.filter(function(element) {
return ! (element.textContent || element.innerText).replace(/\s+/g, '');
});
如果您的elements
是HTMLCollection
,NodeList
(或者不是Array
),请使用Array.filter(elements, fn)
或将elements
变为Array
与Array.prototype.slice.call(elements)
。
如果您也不必支持旧浏览器,则可以使用return ! (element.textContent || element.innerText).trim()
。
要删除这些内容,请循环使用元素并使用thisElement.parentNode.removeChild(thisElement)
。
或者,仅使用节点...
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);
答案 1 :(得分:1)
我不使用jQuery,但我可以提供直接的JavaScript解决方案:
var elms = document.getElementsByTagName('h2'), l = elms.length, i;
for( i=l-1; i>=0; i--) {
if( elms[i].innerHTML.replace(/\s+/,"") == "") {
elms[i].parentNode.removeChild(elms[i]);
}
}
所以,只要做jQuery等价物,我猜。
答案 2 :(得分:1)
要适应alex's,试试这个:
$('h2').filter(function() {
return $.trim($(this).text()).length == 0;
}).remove();
请参阅jsfiddle。
答案 3 :(得分:0)
这只会检查一个空格,但适用于一个基本示例:
$("h2:contains(' ')").remove()
答案 4 :(得分:0)
试试这个
$("h2").each(function(){
var self = $(this);
if ( self.html().trim().length == 0 )
{
self.remove();
}
});