多个项目的Ajax加载器脚本

时间:2017-11-29 05:25:05

标签: javascript jquery html ajax

我有像这样的列表元素

<ol class="listItem">
    <li id="#item-1" class="NewsFeedItem">
        <a href="someurl.com" class="threadLink">Example Url</a>
        <div class="attachedImage"></div>
    </li>
    <li id="#item-2" class="NewsFeedItem">
        <a href="someurl2.com" class="threadLink">Example Url 2</a>
        <div class="attachedImage"></div>
    </li>
    <li id="#item-3" class="NewsFeedItem">
        <a href="someurl3.com" class="threadLink">Example Url 3</a>
        <div class="attachedImage"></div>
    </li>
    ...
</ol>

我只想使用一个脚本来加载每个li的内容。我在这里写了一些代码,但它没有工作

$('.NewsFeedItem').each(function() {
var id = $(this).get(0).id;

$('#' + id + '.attachedImage').load( $('#' + id + '.threadLink').attr('href') + ' .firstPost .messageText img' );

});

我哪里错了?

2 个答案:

答案 0 :(得分:2)

你的代码很好,除了两点。要选择后代,您需要用一个空格分隔选择器,这是您在这一行中缺少的:

$('#' + id + ' .attachedImage').load( $('#' + id + ' .threadLink').attr('href') ...

#id.attachedImage这样的选择器会查找ID为id的元素,并为其分配一个类attachedImage

如果要选择一个元素,为其分配一个类attachedImage,并且该元素是ID id元素的后代,则需要将选择器编写为{{1} }。

修改1:

由于ID中的值已经有#id .attachedImage,因此您还需要从选择器中移除#

#

答案 1 :(得分:0)

只需删除'#'

$( id + '.attachedImage').load( $( id + '.threadLink').attr('href') + '.firstPost .messageText img' );