用jQuery删除“空”段落

时间:2011-10-19 15:36:37

标签: jquery

我的作家养成了创建空段落的坏习惯。 (即,其中没有任何内容的段落,如:

<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

还有什么我应该尝试的吗?

6 个答案:

答案 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();
  

工作演示:http://jsfiddle.net/AndyE/XwABG/

答案 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("&nbsp;"," ")
        .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;