我的作家养成了创建空段落的坏习惯。 (即,其中没有任何内容的段落,如:
<p></p>
是否有一个jQuery函数可以删除“空”段落。这是我尝试过的:
$('p').remove(":contains(' ')"); // nope! bad logic, all p's have empty spaces
$("p:empty").remove() // nope, doesn't work, doesn't remove any p's
还有什么我应该尝试的吗?
答案 0 :(得分:19)
$("p:empty").remove()
适合我(http://jsfiddle.net/AndyE/XwABG/1/演示)。确保您的元素实际上是空的,并且不包含任何空格。
您始终可以使用filter()
:
// Trimming white space
$('p').filter(function () { return $.trim(this.innerHTML) == "" }).remove();
// Without trimming white space
$('p').filter(function () { return this.innerHTML == "" }).remove();
答案 1 :(得分:2)
我认为这适用于任意数量的空格(对不起,我不确定我是否理解段落中是否有空格):
$("p").each(function(){
if ($.trim($(this).text()) == ""){
$this.remove();
}
});
答案 2 :(得分:1)
这是一个简单的旧JavaScript,它非常快:
[].filter.call(document.getElementsByTagName("p"), function(elem){return elem.childElementCount==0 && elem.textContent.trim()==''})
.forEach(function(elem){elem.parentNode.removeChild(elem)})
这个更快:
var paragraphs = document.getElementsByTagName("p");
for (var i = 0, len = paragraphs.length; i < len; i++) {
var elem = paragraphs[i];
if (elem.childElementCount == 0 && elem.textContent.trim() == '') {
elem.parentNode.removeChild(elem);
i--;
len--;
}
}
答案 3 :(得分:0)
使用.each迭代所有段落并检查innerHTML为空并删除那些
答案 4 :(得分:0)
如果你想将Andy的答案扩展到不易碎的空间 (并使用string的trim()方法代替jquery),您可以使用:
$('p').filter(function () {
return this.innerHTML
.replace(" "," ")
.trim()
== ""
}).remove();
答案 5 :(得分:0)
如果空段落是
那么fireeyedboy的p:空选择器就是这样的: -
MERGE (n:TYPE)
WHERE n.propertyA = "A" OR n.propertyB = "B" OR n.propertyC = "C"
ON MATCH SET n.propertyA = "A", n.propertyB = "B", n.propertyC = "C"
ON CREATE SET n.timestamp = <now>, n.propertyA = "A", n.propertyB = "B", n.propertyC = "C"
RETURN n;