2011-05-15 60 views
1

我试图找到所有带有内联样式的p标签attrs style =“text-align:center;”其中只包含 ,没有别的。然后删除每个找到的整个p。查找只有 的段落并删除p标签

还有其他的p标签具有相同的attr,它们不仅包含我想要保留的nbsp,我只是坚持找到只有空间的p标签。愚蠢的WordPress的tinyMCE编辑器,驱使我坚果。

这是我正在努力的基础。只输出所有文本对齐中心的p标签。

var p = $('.entry p[style="text-align: center;"]'); 
p.each(function() { 
    console.log(p); 
}); 

愚蠢的小事情,我不想再花时间试图找出我做错了什么。这里有一个示例页面,它包含了我正在使用的东西。 http://www.drinkinginamerica.com/page/14/

感谢

回答

3

您可以用remove()功能做到这一点:

$('.entry p').each(function() { 
    var $p = $(this), 
     txt = $p.html(); 
    if (txt==' ') { 
     $p.remove(); 
    } 
}); 

的工作示例见http://jsfiddle.net/nrabinowitz/LJHyA/。这假定一个非常严格的情况,其中p标签中唯一的东西是 实体。


太慢了 - @mu胜。

+0

您忽略了'style'属性过滤,但'$(this).html()==' ''是主要的。 – 2011-05-15 03:47:20

+0

这个作品,谢谢。我打算使用remove()方法,但无法让它选出nbsp p标签。试图在一行中做得太辛苦 – jaredwilli 2011-05-15 04:29:39

+0

@mu - 我想我假设我们可能想要只包含' '的所有'p'标签,不管风格如何,但当然可以调整选择器if必要。 – nrabinowitz 2011-05-15 05:13:19

2

我想你想要这样的:

$('.entry p[style="text-align: center;"]').each(function() { 
    var $this = $(this); 
    if($this.html().match(/^\s* \s*$/)) 
     $this.remove(); 
}); 

这是精确style属性有点敏感,但对在 是怎样的段落里面有所格式化宽容。

我想的东西有点宽松可能会更好地为您服务:

$('.entry p').each(function() { 
    var $this = $(this); 
    if($this.css('text-align') == 'center' 
    && $this.html().match(/^\s* \s*$/)) 
     $this.remove(); 
}); 

http://jsfiddle.net/ambiguous/nMKnR/