我可以很容易地刪除沒有空格的標籤......如何使用空格刪除元素?
$('h2:empty').remove();
但是,當有一個空間......
<h2> </h2>
...這是行不通的。
我試圖
if ($('h2').html() == " "){
$('h2').remove();
}
也沒有運氣。有人可以幫忙嗎?
我可以很容易地刪除沒有空格的標籤......如何使用空格刪除元素?
$('h2:empty').remove();
但是,當有一個空間......
<h2> </h2>
...這是行不通的。
我試圖
if ($('h2').html() == " "){
$('h2').remove();
}
也沒有運氣。有人可以幫忙嗎?
試試這個
$("h2").each(function(){
var self = $(this);
if (self.html().trim().length == 0)
{
self.remove();
}
});
我不使用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的當量,我猜。
'/ \ s +/「」' - 這是關鍵OP。這是一個正則表達式,它將用空白替換空白。 – CamelCamelCamel
如果OP的'h2'元素可能包含後代元素,這將會有問題。 – alex
可以搭配只有空白文本元素與...
$('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);
這將只檢查一個空間,但適用於一個基本的例子:
$("h2:contains(' ')").remove()
爲什麼要用'filter()'而不是'each()'? – alex
'$ .trim()'不能像那樣工作。 – alex
我的錯誤,但如果你使用jQuery,你可以使用它的跨瀏覽器安全工具。儘管'String.prototype.trim()'現在已經得到很好的支持。 – alex