2010-03-25 4 views
3

Supposons que j'aiJQuery obtenir le tr après avoir cliqué sur son contenu <a>

<table> 
    <tr> 
    <td><a class='ilink'> link text </a></td> 
    <td></td> 
    <td></td> 
    <tr> 
    <tr> 
    <td><a class='ilink'> link text </a></td> 
    <td></td> 
    <td></td> 
    </tr> 
</table> 

dans le code jquery, après avoir cliqué sur le lien, je veux mettre en évidence la ligne entière de la table que le lien est. Mais comment puis-je trouve le?

Répondre

7

Vous pouvez le faire avec .closest() comme ceci:

$("a.ilink").click(function() { 
    $(this).closest("tr").addClass("highlight"); 
}); 

Si vous avez beaucoup de lignes, ce serait plus efficace (une copie de ce rapport un pour chaque <a>):

$("table").delegate("a.ilink", "click", function(){ 
    $(this).closest("tr").addClass("highlight"); 
}); 
+0

Bonne réponse. J'allais recommander '' '' '' '' '' '' '' '' '' '' '' '' '' '' parentsUntil() '' mais ignorait que sa collection contient tous les éléments parents qui remontent dans l 'arborescence DOM. le plus proche est parfaitement logique. +1 –

1
#EDIT remove... better options listed 
0
$(document).ready(function(){ 
    $('a.ilink').click(function() { 
     $('tr').removeClass('highlight'); 
     $(this).closest('tr').addClass('highlight'); 
    }); 
}); 

Ensuite, vous aurez besoin de la classe surbrillance CSS définie:

.hightlight { background-color:red; } 
Questions connexes