如何删除空格元素?

我可以轻松删除没有空格的标签……

$('h2:empty').remove(); 

但是,当有空间时……

 

……这不起作用。

我试过了

 if ($('h2').html() == " "){ $('h2').remove(); } 

也没有运气。 有人可以帮忙吗?

试试这个

 $("h2").each(function(){ var self = $(this); if ( self.html().trim().length == 0 ) { self.remove(); } }); 

您可以只使用空格文本匹配元素…

 $('h2').filter(function() { return ! $.trim($(this).text()); }); 

要删除这些元素,请在返回的集合上调用remove()

jsFiddle 。


或者,没有jQuery ……

 elements.filter(function(element) { return ! (element.textContent || element.innerText).replace(/\s+/g, ''); }); 

如果您的elementsHTMLCollectionNodeList (或者不是Array ),请使用Array.filter(elements, fn)或将elements转换为Array.prototype.slice.call(elements)Array

如果您不必支持旧浏览器,则可以使用return ! (element.textContent || element.innerText).trim() return ! (element.textContent || element.innerText).trim()

要删除它们,请遍历元素并使用thisElement.parentNode.removeChild(thisElement)

jsFiddle 。


或者,仅使用节点…

 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 。

我不使用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的等价物。

要适应alex’s,试试这个:

 $('h2').filter(function() { return $.trim($(this).text()).length == 0; }).remove(); 

看到jsfiddle 。

这只会检查一个空格,但适用于一个基本示例:

 $("h2:contains(' ')").remove()