在下面的代码中,我试图将第一个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>
答案 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/