2012-11-06 21 views
6

Nel seguente codice, sto cercando di ottenere il valore del primo div in "latest", ma continuo a ricevere "undefined". Mi aspetto il valore 5705. Dovrebbe funzionare, giusto? Come faccio a impostare questo giusto?Perché .first() non funzionerà qui?

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

La parte html: ci saranno più div aggiunte qui. Quindi 5705 può essere 5710 o qualcos'altro.

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

risposta

7

si devono selezionare il primo bambino e non il primo contenitore

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

o

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

Si desidera selezionare il primo figlio, non il primo elemento con la classe più recente.

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

Perché si sta selezionando l'elemento sbagliato (s), tu vuoi gli elementi .story, ma tu sei selezionando gli elementi .latest. Usa:

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

Oppure:

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

Oppure:

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

Esistono diversi modi per farlo:

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

o

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

o

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

$('.latest') ritorno un array di elementi aventi latest in class attributo.
Quindi $('.latest').first() restituisce il primo elemento di questo array.
Nell'esempio, l'elemento HTML div.latest non viene restituito il primo div.story.

Se si prova: console.log($('.latest').first().attr('class')) vedrai cosa corrisponde a ciò che scrivi.

Sembra che si desideri raggiungere la prima storia più recente, ovvero il primo elemento div.story sotto l'elemento div.latest.
Quindi provare: console.log($('.latest .story').first())

Il mio test con JSFIDDLE qui: http://jsfiddle.net/lnplnp/yuMPf/