2010-11-18 22 views
2

Warum funktioniert dieser Code nicht? Und gibt es eine andere Möglichkeit, das erste Element auszuwählen?Wie wähle ich ein Element aus?

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

Ich weiß, dass ich ein Element wie folgt auswählen: $('div a:first')

Antwort

1

Vielleicht ist es das, was Sie

<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

innerhalb einer jeder Schleife $ (this) ist das Objekt für Sie suchen. Sie müssen keine weitere Auswahl treffen, es sei denn, Sie suchen nach etwas innerhalb von $ (this). Wenn Sie versuchen, den ersten zu markieren, sollten Sie dies außerhalb eines Anrufs für jeden tun, da es keinen Sinn macht, ihn n-mal aufzurufen.

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

Diese werden funktionieren.

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

Wenn Sie nur die erste, keine Sinn Schleifen möchten.

Wenn Sie den Rest von ihnen für einen bestimmten Zweck benötigen, zwischenspeichern Sie das Ergebnis des Selektors, und ziehen Sie den einen (die), die Sie benötigen.

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

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

wünschen möchte ich für die Vermeidung von .each stimmen zweimal konnte()! –

Verwandte Themen