2009-09-04 4 views
2

Je fonction JS qui parse par une table:JQuery: comment sélectionner table parent pour l'analyse syntaxique

// id contains a message id, activeRow is "this" from onClick on tr 
function doSomething (id, activeRow) { 
    // AJAX calling using id as parameter 
    $("#searchResultTable > tbody > tr").each(function(index) { 
     $(this).removeClass("bold"); 
    }); 
} 

Cela fonctionne parfaitement bien (grâce à Ariel @other post), mais je pense qu'il devrait y avoir une autre possibilité, comme:

var table = $(activeRow).parent(); 
$("tbody > tr", table).each(function(index) { 
    // .. do something 
}); 
// The above clearly doesn't work, but should document what I'm looking for. 

Cela permettrait l'utilisation du même ID de table tandis que la fonction travaillerait sur chacun d'eux séparément.

Beaucoup, merci beaucoup!

Répondre

1

Close, vous voudriez utiliser une méthode de classe sur la table

$("table.className tbody tr").each(function() { 
    // .. do something 
}); 
5

parents() jQuery fait obtenir la table parent un clin d'oeil:

$(activeRow).parents('table')[0]; 
3

Qu'en est-:

$(activeRow).siblings().andSelf().removeClass("bold") 

Cela prendra le <tr> en activeRow, prenez son frère <tr> s également, et supprimez la classe "bold" de tous les.

3

Il peut être préférable d'utiliser closest comme suit:

$(activeRow).closest('table')[0]; 

D'ici: http://api.jquery.com/closest/

le plus proche: Voyages l'arbre DOM jusqu'à ce qu'il trouve une correspondance pour le sélecteur fourni. Parents: déplace l'arborescence DOM vers l'élément racine du document, en ajoutant chaque élément ancêtre à une collection temporaire; il filtre ensuite cette collection en fonction d'un sélecteur s'il en existe un.

Dans ce scénario, il se pourrait bien que parents obtient le plus haut sommet table où il y a plus d'un dans l'arbre DOM, où que closest obtient celui que vous êtes en train d'essayer de travailler.

+0

Je sais que cette réponse a été plutôt tardive, mais j'ai trouvé cette réponse sur un certain nombre de recherches sur google, alors j'ai pensé que cela valait la peine de contribuer. –

Questions connexes