jQuery在p内展开div

时间:2013-06-24 09:14:05

标签: jquery

我正在建立一个CMS并且有一个WYSIWYG来输入文本;但是当格式从另一个文档传递时,有时会复制一个随机的<div>

因此,某些标准文本的HTML输出通常如下所示:

<div class="show-text">
    <p>In Italo Calvino’s 1985 novel Mr. Palomar, the reader is taken on a journey through mundane but highly individual musings, seen from the perspective of the title character, who takes his name from the famous telescope and observatory. Mr Palomar tries to explain and define his existence by seeking order and reason in his visual and cultural surroundings. Taking the novel as a starting point, this exhibition has developed through close collaboration and discussion between the artists to create a symbiosis between the artworks, the boundaries of which are at times ambiguous.</p>
    <p>Dylan Shipton’s work re-models the space through large-scale architectural interventions, including a viewing structure that provides an altered view of the other pieces. Shipton’s work will serve as an environmental framework and counter-point for the other works to react with and against. In an extension of her painting practice, Kate Brigden is showing a series of glazed porcelain objects that aim to toy with ideas of vision and perception, suggestive of cosmic concepts. Pippa Gatty’s video projections simulate a landscape and atmosphere, enveloping and interrupting the objects and structures.</p>
    <p>Palomar is developed from a project initiated at Surface Gallery, Nottingham 2012.</p>
    <p><div><em>‘In identifying a constellation, the decisive proof is to see how it answers&nbsp;</em><em>when you call it. More convincing than the matching of distances&nbsp;</em><em>and configurations with those marked on the chart is the reply that&nbsp;</em><em>the luminous dot gives to the name by which it has been called, its&nbsp;</em><em>promptness in responding to that sound, becoming one with it.’ &nbsp;—&nbsp;</em>Mr.&nbsp;Palomar, Italo Calvino, (Martin Secker &amp; Warburg, 1985)</div></p>
</div>

所以,我很想知道,使用jQuery,我如何解开<div>内的任何不需要的<p>。我认为这样可行:

$('.show-content-container .show-text p div').contents().unwrap(); 

但它只是删除了div之前和之后的p。

2 个答案:

答案 0 :(得分:1)

您的标记对您的影响:

<p><div>
使用.show-text.html()进行测试时

How it looks to jQuery

<p></p><div>

因此,选择器永远不会按照您的意愿执行,因为任何p内部实际上都没有任何div。

如果您根本不想要任何div内部.show-text,您可以使用:

$('.show-text').find('div').contents().unwrap(); 

jsFiddle here.

答案 1 :(得分:0)

div不会在p

中呈现
$('.show-text div').replaceWith(function () {
    return '<p>' + $(this).html() + '</p>';
});