2009-11-02 11 views
18

J'ai une table, contenant des lignes, des cellules contaning - et certains d'entre eux contiennent un img comme suit:jQuery: trouver la prochaine table-row

<img id="FormView1_btnSave_row1%1%new" style="border-width: 0px; cursor: pointer;" 
src="grafik/ok_16x16.gif" onclick="cleverStuff(this)"/> 

Dans la fonction cleverStuff Je voudrais utiliser sur la ligne qui suit la ligne dans laquelle le bouton a été cliqué - ce bouton spécial est contenu dans la dernière ligne visible seulement, il y a un tas de lignes cachées ci-dessous et je veux rendre visible la première ligne cachée - mais je n'arrive pas à passer à la suivante ligne. Ma compréhension était que toute la combinaison de parent() et next() pourrait être utilisée pour obtenir de l'img au td, au tr et finalement au tr suivant. donc j'ai essayé de le vérifier:

$(ctrl).attr('id') retourne correctement l'id img :)

$(ctrl).parent().attr('id') retourne NULL.

Qu'est-ce qui me manque ici?

+0

Eh bien, ce qui est le code html pour le parent de l'img? A-t-il un identifiant? – Victor

Répondre

60

Cela devrait vous donner la englobante tr de l'élément, même si ce n'est pas parent direct de l'élément, puis la ligne suivante de cette ligne. Si vous utilisez parent sur un élément qui est à l'intérieur d'un td, il vous donnera la colonne, pas la ligne. Fournir un filtre à la méthode parent() va simplement filtrer le parent à moins qu'il n'arrive à correspondre au filtre, ce qui ne donne généralement aucun élément correspondant. Le plus proche est probablement ce que vous voulez, mais les parents ('tr') peuvent être nécessaires si vous avez des tables imbriquées et que vous voulez la rangée externe au lieu de la rangée intérieure.

$(this).closest('tr').next('tr') 
+0

+1 Je les ai toujours mélangés: | – Greg

+0

cela me renvoie le tr précédent. :/ – AlphaMale

+2

@AlphaMale qui ne me semble pas possible – tvanfosson

30

Vous faites cela devrait assez HTML vraiment nous montre pas, mais travailler:

$(ctrl).parent('tr').next(); 
+0

Merci Greg - vous avez été très rapide et m'a mis sur la bonne voie: j'ai remplacé mon "parent" vide par parent (tr) et tout à coup les choses semblaient mieux :) donnera le "contrôle" et si possible aussi noter jusqu'à toby et tvanfosson qui a répondu dans le même sens. – MBaas

+0

@ La réponse de tvanosson est meilleure – Greg

5

Peut-être l'élément parent n'avait pas son jeu id? Pour accéder à la ligne suivante de l'image que je crois que vous pouvez faire:

$(this).parent('tr').next('tr') 
1

J'espère que u peut utiliser

jQuery(this).parents('tr');