2010-05-28 4 views
1

J'ai ce code. Il retourne tout le code td incluant les tags td/td. Je veux seulement revenir le contenu/html du tdjQuery: Get <td> html seulement

<td>Hey</td> 

devrait me donner juste

Hey 

 

jQuery("#ReportTable", html).each(function (index, tr) { 
    arr[index] = jQuery("tbody tr", tr).map(function (index, td) { 
     return jQuery(td).html(); 
    }); 
}); 

Le code jQuery me donne un tableau qui ressemble à ceci:

arr[0] = {"<td>1</td>", "<td>Hey</td>", "<td>Some data</td>" } 
arr[1] = {"<td>2</td>", "<td>There</td>", "<td>Some other data</td>" } 

De html Ressemblant à ceci:

<table id="ReportTable"><tr><td>1</td><td>Hey</td><td>Some data</td></tr><tr><td>2</td><td>There</td><td>Some other data</td></tr></table> 

Ainsi, le tableau est bon, sauf que je ne le besoin html/texte à l'intérieur du TD.

+3

Vous utilisez 'each()' contre un sélecteur d'ID. S'il vous plaît dites-moi que vous n'avez pas plus d'un élément avec l'ID 'ReportTable'. Vous ne pouvez pas réutiliser les ID. – user113716

+0

Pouvez-vous afficher le balisage avec lequel vous traitez? Cela peut être beaucoup simplifié, mais vous avez besoin de votre balisage pour être certain. –

+0

J'ai posté le balisage – Poku

Répondre

2

Vous devez descendre d'un niveau plus dans votre sélecteur, comme ceci:

jQuery(".ReportTable", html).each(function (index, tr) { 
    arr[index] = jQuery("tbody tr td", tr).map(function (index, td) { return jQuery(td).html(); }); 
}); 

Ou, il suffit d'utiliser .text() à la place ou .html(), comme ceci:

jQuery(".ReportTable", html).each(function (index, tr) { 
    arr[index] = jQuery("tbody tr", tr).map(function (index, td) { return jQuery(td).text(); }); 
}); 

(j'ai ".ReportTable" place de "#ReportTable", comme les commentaires notés sur la question ID doivent être uniques ... donc vous devriez utiliser class="ReportTable" s'il y en a plusieurs)

+0

OP utilise des noms confus comme paramètres de fonction. J'ai l'impression que quand OP fait '.each (fonction (index, tr) {...', par exemple, il pense que 'tr' sélectionne un' 'au lieu de faire référence à la valeur d'itération courante. td' dans '.map (fonction (index, td)'. Peut-être mérite-t-il une mention? – user113716

+0

@patrick - Ajout d'une demande de balisage à la question, vraiment il peut être réduit plus loin ... difficile de dire ce qu'il recherche après bien sûr, la question ne donne pas vraiment beaucoup de contexte –

+0

Bonne idée Bien que basé sur le fait que OP ait donné le nom 'td' à un paramètre qui fait référence à un' ', je ne serais pas surpris s'il pense que 'td' faisait' .map() 'pour itérer sur les éléments' ' – user113716

0

Alors pourquoi ne pas sélectionner le TD au lieu du TR dans votre sélecteur et travailler à partir de là? La fonction html() de jQuery utilise htmlElement.innerHtml, donc vous ne devriez avoir aucun problème une fois que vous avez sélectionné les éléments corrects.

2

Il me semble que la solution la plus simple serait de travailler directement sur les TD au lieu de sélectionner d'abord leur parent. Est-ce que le code ci-dessous résout le problème? (Je pourrais avoir mal compris - excuses si c'est le cas!)

jQuery("#ReportTable td", html).each (function (index) { 
    arr[index] = jQuery(this).html(); 
} 
+0

En fait, je préfère utilisez '$ (html) .find (" # R eportTable td ")' - Je pense que c'est un peu plus facile à lire. Dans les coulisses, jQuery traite les deux à la fois, donc pour la lisibilité humaine, j'utilise la méthode 'find' :) – iblamefish