为什么.first()在这里不起作用?

时间:2012-11-06 08:13:34

标签: jquery

在下面的代码中,我试图将第一个div的值设置为“latest”,但我一直在“未定义”。我期待值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>

5 个答案:

答案 0 :(得分:7)

您必须选择第一个而不是第一个容器

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

$('.latest').children().first().attr('lastValue')

答案 1 :(得分:5)

您想要选择第一个孩子,而不是第一个带有最新课程的元素。

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

答案 2 :(得分:2)

因为您选择了错误的元素,所以想要 .story元素,但您选择 .latest元素。使用:

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

或者:

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

或者:

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

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:1)

$('.latest')返回latest属性中class的所有元素数组。
因此$('.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/