在以下代码中,我试图在"最新"下获得第一个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/