2012-11-06 34 views
6

Trong đoạn mã sau, tôi đang cố gắng để có được giá trị của div đầu tiên theo "mới nhất", nhưng tôi tiếp tục nhận được "không xác định". Tôi đang mong đợi giá trị 5705. Điều này sẽ có hiệu quả, đúng không? Làm thế nào để tôi đặt quyền này?Tại sao .first() sẽ không hoạt động ở đây?

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

Phần html: Sẽ có nhiều div được thêm tại đây. Vì vậy, 5705 có thể là 5710 hoặc cái gì khác.

<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> 

Trả lời

7

bạn phải chọn đứa con đầu lòng và không phải là container đầu tiên

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

hoặc

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

Bạn muốn chọn phần tử con đầu tiên, không phải là phần tử đầu tiên có lớp mới nhất.

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

Bởi vì bạn đang lựa chọn các yếu tố sai (s), bạn muốn các yếu tố .story, nhưng bạn là chọn các yếu tố .latest. Sử dụng:

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

Hoặc:

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

Hoặc:

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

Bạn có nhiều cách để làm điều này:

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

hoặc

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

hoặc

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

$('.latest') trở lại một mảng của bất kỳ yếu tố mà có latest trong class thuộc tính.
Vì vậy, $('.latest').first() trả về phần tử đầu tiên của mảng này.
Trong ví dụ của bạn, phần tử HTML div.latest được trả lại không phải là div.story đầu tiên.

Nếu bạn thử: console.log($('.latest').first().attr('class')) bạn sẽ thấy nội dung phù hợp với nội dung bạn viết.

Dường như bạn muốn tiếp cận câu chuyện mới nhất đầu tiên, có nghĩa là phần tử div.story đầu tiên theo yếu tố div.latest.
Vì vậy, hãy thử: console.log($('.latest .story').first())

thử nghiệm của tôi với JSFIDDLE đây: http://jsfiddle.net/lnplnp/yuMPf/

Các vấn đề liên quan