使用jQuery重新格式化RSS提要

时间:2011-02-28 07:48:07

标签: jquery rss reformat

我目前正在提取RSS源,其格式基本上是title-> image->文本内容。我想重新格式化,以便图像首先出现。我正在尝试:

<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 个答案:

答案 0 :(得分:1)

问题是循环内部的选择器。它找到了所有的img标签,而不仅仅是所需的li.rssitem里面的标签。

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

如果这解决了您遇到的问题,请告诉我。

UPDATE:摆脱了remove(),因为它会搞砸你。谢谢DT。

答案 1 :(得分:0)

试试这段代码:

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

我没有测试过,所以我不确定它是否可以开箱即用,但希望你能够根据自己的需要对其进行修改。