2011-09-01 4 views
2

Comment obtenir la valeur de la cellule dans une table lorsque l'utilisateur clique sur la cellule suivante?Récupérer la valeur des enfants dans jquery

<table id="registrarsTable"> 

<c:forEach items="${requestScope.AllUsers}" var="user" varStatus="loop"> 
    <tr class="userRow"> 
     <td class="numberWidth">${loop.index + 1}</td> 
     <td class="nameWidth user" id="${user.userno}">${user.fullName}</td> 
     <td> 

     <button name="DeactivateBtn" id="deactivate" class="deactivate btn">deactivate</button> 

     </td> 
    </tr> 
</c:forEach> 

dans jquery Je veux obtenir la valeur de l'attribut « id » de la deuxième td lorsque l'utilisateur clique sur le bouton Désactiver.

Je fais comme ça

var userNo = $('td.user', $(this).parents(".userRow")).attr('id'); 

et comme celui-ci

 var userNo = $($(this).parent(".userRow") > "td").attr("id"); 

et personne ne travaille!

Répondre

1
$('#deactivate').click(function() { 
    var userNo = $(this).parent().prevAll('td.user').attr('id'); 
}); 

partir du bouton (qui est this), traverse au parent (le <td> contenant le bouton de désactivation). Ensuite, au frère précédent <td> avec la classe user, et obtenez l'attribut id.

Alternativement, si vous voulez éviter de se fier sur le fait que le bouton de désactivation est dans un <td> après son <td> nom d'utilisateur, vous pouvez le faire:

$('#deactivate').click(function() { 
    var userNo = $(this).closest('tr').find('td.user').attr('id'); 
}); 

qui trouve le parent <tr> avec closest puis le <td class="user"> avec find.

Exemple de travail: http://jsfiddle.net/FishBasketGordo/Bk6ML/

API Références:

+0

La première façon ne fonctionne pas, lorsque l'utilisateur n'a pas de valeur, il renvoie undefined, et lorsque vous utilisez placard dans le second, la fonction de retour n'existe pas! – palAlaa

+0

Le deuxième exemple avait une faute de frappe, que j'ai corrigé. Voir l'exemple de travail. – FishBasketGordo

Questions connexes