переформатирование RSS-канала с помощью jQuery - PullRequest
1 голос
/ 28 февраля 2011

В настоящее время я работаю с RSS-каналом, в котором форматом является заголовок-> изображение-> текстовое содержимое. Я хотел бы переформатировать его так, чтобы изображение было первым. Я сейчас пытаюсь:

<script type="text/javascript">
    $(document).ready(function() {
$("li.rssitem").each(function() {
$(".rssdescription a img").remove().insertBefore("h3");
    });
    });
</script>

HTML выглядит так:

<ul id="rssitems">

<li class="rssitem"><h3 class="rsstitle"></h3>
<div class="rssdescription"><p><a href="#"><img src="..."></a></p><p>content</p></div></li>

<li class="rssitem"><h3 class="rsstitle">><a href="#">...</a></h3>
<div class="rssdescription"><p><a href="#"><img src="..."></a></p><p>content</p></div></li>

</ul>

Что работает, за исключением того, что в списке много элементов (все с изображениями). Этот код ставит ВСЕ изображения перед всеми h3. У меня явно проблемы с зацикливанием правильно. Большое спасибо, ребята!

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Проблема в селекторе, который находится внутри цикла. Он находит все теги img, а не только один внутри нужного li.rssitem.

<script type="text/javascript">
    $(document).ready(function() {
        $("li.rssitem").each(function() {
            $(this).find(".rssdescription a img").insertBefore("h3");
        });
    });
</script>

Дайте мне знать, если это решит проблему, с которой вы столкнулись.

ОБНОВЛЕНИЕ: Избавился от удаления (), так как он собирается ввернуть с тобой. Спасибо DT.

0 голосов
/ 28 февраля 2011

Попробуйте этот код:

$("li.rssitem").each(function() {
    var target = $(this).children("h3");
    $(this).find("img").each(function() {
        $(this).remove();
        $(target).before($(this));
    });    
});

Я не тестировал его, поэтому не уверен, что он будет работать «из коробки», но, надеюсь, вы сможете изменить его так, чтобы он соответствовал вашим требованиям.необходимо.

...