J'essaie d'obtenir la valeur du premier td dans chaque tr lorsqu'un utilisateur clique sur "clic".
Le résultat ci-dessous affichera aa, ee ou ii. Je pensais utiliser le plus proche ('tr') .. mais cela produisait toujours "Object object". Je ne sais pas quoi faire sur celui-ci.
Mon html est
<table>
<tr>
<td>aa</td>
<td>bb</td>
<td>cc</td>
<td>dd</td>
<td><a href="#" class="hit">click</a></td>
</tr>
<tr>
<td>ee</td>
<td>ff</td>
<td>gg</td>
<td>hh</td>
<td><a href="#" class="hit">click</a></td>
</tr>
<tr>
<td>ii</td>
<td>jj</td>
<td>kk</td>
<td>ll</td>
<td><a href="#" class="hit">click</a></td>
</tr>
</table>
Jquery
$(".hit").click(function(){
var value=$(this).// not sure what to do here
alert(value) ;
});
$(this).parent().siblings(":first").text()
parent
vous donne le <td>
autour du lien,
siblings
donne toutes les balises <td>
dans ce <tr>
,
:first
Donne le premier élément correspondant de l'ensemble.
text()
donne le contenu de la balise.
Cela devrait fonctionner:
$(".hit").click(function(){
var value=$(this).closest('tr').children('td:first').text();
alert(value);
});
Explication:
.closest('tr')
obtient l'ancêtre le plus proche qui est un élément <tr>
(donc dans ce cas, la ligne où le <a>
est dans)..children('td:first')
récupère tous les enfants de cet élément, mais avec le sélecteur :first
nous le réduisons au premier <td>
élément..text()
récupère le texte à l'intérieur de l'élémentComme vous pouvez le voir dans les autres réponses, il n'y a pas qu'une seule façon de procéder.
Dans le cas spécifique ci-dessus, vous pouvez faire du jonglage parent/enfant.
$(this).parents("tr").children("td:first").text()
$(".hit").click(function(){
var values = [];
var table = $(this).closest("table");
table.find("tr").each(function() {
values.Push($(this).find("td:first").html());
});
alert(values);
});
Vous devez éviter $(".hit")
c'est vraiment inefficace. Essayez plutôt d'utiliser la délégation d'événements.
Installez Firebug et utilisez console.log
au lieu de alert
. Ensuite, vous verrez l'élément exact auquel vous accédez.
Si vous devez obtenir tous les td à l'intérieur de tr sans leur définir d'ID, vous pouvez utiliser le code ci-dessous:
var items = new Array();
$('#TABLE_ID td:nth-child(1)').each(function () {
items.Push($(this).html());
});
Le code ci-dessus ajoutera toutes les premières cellules du tableau dans une variable de tableau.
vous pouvez changer nth-child (1) ce qui signifie que la première cellule à n'importe quel numéro de cellule dont vous avez besoin.
j'espère que ce code vous aidera.