2010-03-20 7 views
1

Supposons que mon code est comme ceci:Comment utiliser JQuery pour cela? (Boucle à travers les classes)

<td class="apple"> 
<div class="worm"> 
text1 
</div> 
</td> 

<td class="apple"> 
<div class="worm"> 
text2 
</div> 
</td> 

<td class="apple"> 
<div class="worm"> 
text3 
</div> 
</td> 

Comment puis-je boucle à travers tout avec « classe td pomme », puis saisir le texte de la div à l'intérieur avec id « ver », puis définissez chacun des .attr() comme ce texte?

Résultat:

<td class="apple" title="text1"> 
<div class="worm"> 
text1 
</div> 
</td> 

<td class="apple" title="text2" > 
<div class="worm"> 
text2 
</div> 
</td> 

<td class="apple" title="text3"> 
<div class="worm"> 
text3 
</div> 
</td> 

Merci

Répondre

6
$('td.apple').each(function() { 
    $(this).attr('title', $('div.worm', this).text()); 
}); 

Ou cette version plus courte (prise en charge à partir de jQuery 1.4):

$('td.apple').attr('title', function() { 
    return $('div.worm', this).text(); 
});​ 
+0

Mais $ ("div.worm") ... Jquery saura-t-il que c'est le ver de cette classe? – TIMEX

+0

Je suis assez sûr que vous voulez dire 'td.apple' au lieu de' tr.apple' –

+0

@Jeroen: oui, une faute de frappe. Merci. –

1

Cela devrait faire l'affaire.

//We will iterate through each td which has class of apple. 
$('td.apple').each(
    function() 
    { 
     //'this' in the function refers to the current td. 
     //we will try to find a div with class 'worm' inside this td. 
     var title = $(this).find('div.worm').text(); 
     $(this).attr('title', title); 
    } 
); 
0

Je suppose que vous voulez dire td class="apple"

$("td.apple").each(function(){ 
    this.title=$(this).find("div").text(); 
}); 

Si vous me utiliser pour faire vos devoirs de l'école, je vais vous enfermer dans une cabine téléphonique pleine d'abeilles.

+0

Je préférerais utiliser la méthode 'attr' pour m'assurer que le code fonctionnera avec le navigateur croisé. – SolutionYogi

+0

@SolutionYogi: Connaissez-vous un navigateur (que jQuery travaille) qui ne fonctionnera pas avec cette construction ('this.title')? Je doute que. –

+0

Marco, je suis corrigé. J'ai regardé la spécification (http://www.w3.org/TR/html401/struct/global.html#h-7.4.3) et j'ai trouvé que l'attribut 'title' est valide sur TOUS les éléments. Pour une raison ou pour une autre, j'avais l'impression que cela n'est valable que pour certains éléments. – SolutionYogi

2

Pour ajouter aux bonnes réponses, je recommanderais d'utiliser des enfants plutôt que de trouver. Les enfants ne sont pas récursifs, un peu d'optimisation aide. Sauf si vous avez besoin d'une récursivité via les TD.

$("td.apple").each(function() { 
    $(this).attr('title', $(this).children("div.worm").text()); 
}); 
+1

Cela a du sens. Vous avez oublié d'ajouter la classe 'ver' à votre sélecteur 'div'. – SolutionYogi

+0

Désolé changé, aussi pour utiliser attr plutôt que le titre. –

Questions connexes