2011-05-15 98 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/