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



在以下代码中,我试图在"最新"下获得第一个Div的值,但我一直在获得"未定义"。我期望价值5705。这应该可以起作用,对吗?我该如何设置正确?

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

HTML部分:这里还会添加更多Divs。因此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>

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

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

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

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

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

,因为您选择了错误的元素(s),您想要 .story元素,但是您选择 .latest元素。使用:

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

或:

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

或:

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

您有几种方法:

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

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

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

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

如果您尝试:console.log($('.latest').first().attr('class'))您会看到您编写的内容。

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

我与JSFiddle的测试:http://jsfiddle.net/lnplnp/yumpf/

最新更新