6

在下面的代码中,我试图获取“最新”下的第一个 div 的值,但我不断得到“未定义”。我期待值 5705。这应该有效,对吧?我该如何正确设置?

var auto_refresh = setInterval(function()
{
    console.log($('.latest').first().attr('lastValue'));
}, 5000); // refresh every 5 seconds

html部分:这里会添加更多的div。所以 5705 可能是 5710 或其他东西。

<div class="latest">
<div class="story" lastValue="5705">Story 5</div>
<div class="story" lastValue="5704">Story 4</div>
<div class="story" lastValue="5703">Story 3</div>
<div class="story" lastValue="5702">Story 2</div>
<div class="story" lastValue="5701">Story 1</div>
</div>
4

5 回答 5

7

你必须选择第一个孩子而不是第一个容器

$('.latest>div').first().attr('lastValue')

或者

$('.latest').children().first().attr('lastValue')
于 2012-11-06T08:16:31.017 回答
5

您要选择第一个孩子,而不是选择最新类的第一个元素。

console.log($('.latest > div').first().attr('lastValue'));
于 2012-11-06T08:14:47.527 回答
2

因为您选择了错误的元素,所以您想要这些.story元素,但您正在选择这些.latest元素。采用:

$('.latest .story:first').attr('lastValue');

或者:

$('.latest .story:first-child`).attr('lastValue');

或者:

$('.story:first-child').attr('lastValue');
于 2012-11-06T08:16:45.797 回答
1

您有几种方法可以做到这一点:

console.log($('.latest .story').first().attr('lastValue'));

或者

console.log($('.latest .story:first-child').attr('lastValue'));

或者

console.log($('.latest').find('.story').attr('lastValue'));
于 2012-11-06T08:17:30.130 回答
1

$('.latest')返回具有latestinclass属性的任何元素的数组。
所以$('.latest').first()返回这个数组的第一个元素。
在您的示例中,返回的 HTML 元素div.latest不是第一个div.story.

如果您尝试 :console.log($('.latest').first().attr('class'))您将看到与您所写内容匹配的内容。

看来您要到达第一个最新故事,即div.story元素下的第一个div.latest元素。
所以尝试:console.log($('.latest .story').first())

我在这里对 JSFIDDLE 的测试:http: //jsfiddle.net/lnplnp/yuMPf/

于 2012-11-06T13:09:44.837 回答