jQuery在p内展开div

问题描述 投票:2回答:2

我正在建立一个CMS,并有一个所见即所得的文字输入;但是当格式从另一个文档传递时,有时会复制一个随机的<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>s中展开任何不需要的<p>s。我认为这会奏效:

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

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

jquery
2个回答
1
投票

您的标记如何看待您:

<p><div>

How it looks to jQuery在使用.show-text.html()进行测试时:

<p></p><div>

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

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

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

jsFiddle here.


0
投票

div不会在p中呈现。

$('.show-text div').replaceWith(function () {
    return '<p>' + $(this).html() + '</p>';
});
© www.soinside.com 2019 - 2024. All rights reserved.