Как я могу заменить или удалить упаковочный div из разметки с помощью javascript или jquery и сохранить динамическое содержимое на своем месте? - PullRequest
3 голосов
/ 20 января 2012

У меня есть виджет rss, который генерирует эти странные элементы div, влияющие на макет поста в блоге. Эти div окружают и image, и только один абзац текста, выдвигающий другие абзацы, которые должны быть обернуты вокруг изображения, создавая действительно неудобные блоки пространства.

Вот пример существующей разметки:

<div class="separator" style="clear: both; text-align: left;">
<a style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" imageanchor="1" href="#" target="_blank">
<img width="320" height="214" border="0" src="http://3.bp.blogspot.com/-TIpzIZpEY50/TwEruI4XDlI/AAAAAAAAAXg/gIv3vafB3Sc/s320/December+2011+130.JPG">
</a>
and here is a bunch of text 
</div>

Что я хочу сделать, это удалить оберточный разделитель классов div и заменить его содержимым внутри. Каждый экземпляр этого div имеет различное содержание.

Итак, я попытался использовать следующий скрипт jquery, но он не работает, потому что содержимое не заключено в дочерние элементы div, поэтому я застрял:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){

$("div.separator").replaceWith(function() {
return $(this).contents();

});

Спасибо за вашу помощь!

Ответы [ 5 ]

1 голос
/ 20 января 2012
$("div.separator").children().unwrap();
1 голос
/ 20 января 2012
$('div.seperator').each(function() {
  $(this).replaceWith($(this).children());
});
1 голос
/ 20 января 2012

Просто используйте метод jQuery .unwrap () :

$("div.separator").children(':first').unwrap();
1 голос
/ 20 января 2012

http://jsfiddle.net/Sztzq/

 ('.separator').children(':first').unwrap();
0 голосов
/ 20 января 2012

Если вы просто хотите удалить их, используйте $('div.separator').remove();.

Чтобы повторно использовать div, используйте либо

$('div.separator').empty().html('<p>your custom html here</p>');

или

$('div.separator').empty().append(yourExistingDOMElement);

в зависимости от того, на что вы его заменяете.

Чтобы решить их все, становится:

$('div.separator').each(function () {
    $(this).empty().html(string); //or the append version.
});

Надеюсь, это поможет,

Пит

...