這可以用該短jQuery的命令很容易地完成:
$('p meta').remove();
查找<meta>
標記,是<p>
孩子們在選擇器被容易地描述,並且remove()
將刪除所有匹配元素一次。
它變得更加複雜一點,當你的HTML是一個字符串,但它仍然不是太糟糕了:
var content = '...insert above html here...';
// insert into a div to parse as HTML
var $content = $('<div />').html(content);
// find all <meta> tags inside <p> and remove them
$content.find('p meta').remove();
// convert contents back to a string
content = $content.html();
工作小提琴:http://jsfiddle.net/WVWPS/
雖然上面的代碼工作對我來說,有可能在某些瀏覽器中出現問題是由於<meta>
不是文檔正文中的有效HTML元素。 This question表明在某些情況下,jQuery可能無法正確創建像<meta>
這樣的元素。
如果遇到特定瀏覽器的問題,你可以嘗試這樣的事:
var content = '...insert above html here...';
// convert <meta> tags to <span> tags with a "meta" class
content = content.replace(/<meta /g, '<span class="meta" ');
// insert into a div to parse as HTML
var $content = $('<div />').html(content);
// find all .meta elements inside <p> and remove them
$content.find('p .meta').remove();
// convert contents back to a string
content = $content.html();
工作小提琴:http://jsfiddle.net/a4Wa3/
之前我們解析HTML,我們正在做一個字符串替換到改爲將<meta>
標籤轉換爲<span class="meta">
標籤。
請注意,最後一個選項是一個非常脆弱的解決方案,如果更改元標記的生成方式,可能會中斷。作爲一般規則,應避免使用正則表達式或其他字符串函數操作HTML,因爲它可能有serious side effects。
是否必須使用「regex」? –
@badZoke,不,任何使用JavaScript或jQuery代替使用父段落標記的meta –