jQuery-obtenir la valeur texte d'une cellule de table dans la même rangée qu'un élément cliqué
je clique sur un lien dans une cellule de tableau. J'ai besoin d'obtenir la valeur d'une cellule spécifique dans cette même rangée de tableau.
<tr>
<td class="one">this</td>
<td class="two">that</td>
<td class="three">here</td>
<td class="four"><a href="#">there</a></td>
</tr>
<tr>
<td class="one">qwqw</td>
<td class="two">dfgh</td>
<td class="three">ui</td>
<td class="four"><a href="#">there</a></td>
</tr>
j'ai un gestionnaire de clic joint le lien dans la quatrième cellule. Ce gestionnaire de clic appelle une fonction qui ouvre une fenêtre modale. Quand un formulaire dans le modal est soumis, je veux aussi passer la valeur de la classe td="deux" de la ligne dans laquelle le lien a été cliqué à ce modal.
Voici la fonction qui envoie le modal (la zone de problème est obtenir la valeur correcte pour quelque Chose var):
var Send = function() {
var Name = $( '#name' ).val();
var Something = $(this).closest('td').siblings('.two').text(); // version 1. doesn't work
var Something = $(this).closest('tr').siblings('td.two').text(); // version 2 also doesn't work
var Something = $(this).attr('class'); // version 3. just a test but also doesn't work
$.ajax( {
async: false,
data: { name: Name, somedata: Something },
type: 'POST',
url: the url
});
};
le problème est que je ne peux pas obtenir la bonne valeur pour quelque chose. Il doit être la valeur de td class=deux dans la même ligne que l'élément cliqué.
La façon dont ce tout vient ensemble. Cliquez sur le lien cible, qui appelle une méthode appelée Send_Click(). Send_Click effectue quelques validations puis appelle Send () mais la valeur de quelque chose n'est jamais remplie. Est-ce parce que this
n'est pas ce que je suis en train de penser? Hjelp!
5 réponses
.children()
(documentation ici):
$(this).closest('tr').children('td.two').text();
devrait fonctionner:
var Something = $(this).children("td:nth-child(n)").text();
ainsi vous pouvez utiliser parent() pour atteindre le tr parent et ensuite utiliser find pour rassembler le td avec la classe 2
var Something = $(this).parent().find(".two").html();
ou
var Something = $(this).parent().parent().find(".two").html();
utiliser autant que parent() de ce que jamais la profondeur de l'objet cliqué selon la ligne tr
j'espère que cela fonctionne...
Ce sera également le travail
$(this).parent().parent().find('td').text()