2010-11-18 6 views
2

Pourquoi ce code ne fonctionne pas? Et existe-t-il un autre moyen de sélectionner le premier élément?Comment sélectionner un élément?

<div> 
    <a href="#">text</a> 
    <a href="#">text</a> 
</div> 

<script type="text/javascript"> 
$(function() { 
    $('div a').each(function(){ 
      $(':first', this).css('color', 'red'); 
     //...other actions with $(this) 
    }); 
}); 
</script> 

Je sais que je peux sélectionner un élément comme celui-ci: $('div a:first')

Répondre

1

Peut-être que c'est ce que vous voulez

<div> 
    <a href="#">text</a> 
    <a href="#">text</a> 
</div> 

<script type="text/javascript"> 
    $(function() { 
     $('div a').each(function(i, elm){ 
      if (i == 0){ 
       $(elm).css('color', 'red'); 
      }        
      //...other actions with $(this) 
     }); 
    }); 
</script> 
1

A l'intérieur d'une chaque boucle, $ (ce) est l'objet que vous recherchez. Vous n'avez pas besoin de faire d'autres choix à moins que vous cherchiez quelque chose à l'intérieur de $ (this). Si vous essayez de mettre en évidence le premier, vous devriez le faire en dehors d'un appel à chacun car cela n'a pas beaucoup de sens de l'appeler n fois.

1
$(function() { 
    $('div a').each(function(index){ 
      if(index === 0){ 
       $(this).css('color', 'red'); 
      } 
     //...other actions with $(this) 
    }); 
}); 
2

Cela fonctionnera.

$('div a').first(); 
$('div a').eq(0); 
$('div a').slice(0,1); 
$('div a').filter(':first'); 

Si vous voulez seulement le premier, aucune boucle de sens.

Si vous aurez besoin du reste d'entre eux pour un but précis, cachez le résultat du sélecteur, le pull le (s) dont vous avez besoin.

var $div_a = $('div a'); 

$div_a.first(); // for the first 
$div_a.slice(1,4); // for the second through fourth 
+2

voudrais pouvoir voter deux fois pour éviter les .each()! –

Questions connexes