Je dois récupérer certaines parties de plusieurs tables, les sauvegarder et enfin générer une nouvelle table en utilisant un modèle jQuery. Mais j'ai des problèmes pour collecter la première valeur.Problèmes lors de l'extraction de parties de tables HTML rendues avec jQuery
HTML
<table>
<tr><td colspan="7"><a href="http://link/index.php?view=page&id=2961" target="_blank" title="title">atext1 atext2</a> - stuff 2 - <img src="img/icon_1.gif" class="icon" title="icon1" />12 - <img src="img/icon_2.gif" class="icon" title="icon2" />4 - <span title="long title"><img src="img/icon_3.gif" class="icon" /> stuff 5 </span></td></tr>
<tr><th><span title="title1">th1</span></th><th title="title2">th2</th><th title="title3">th3</th><th title="title4">th4</th><th title="title5">th5</th><th title="title6">th6</th><th title="title7">th7</th></tr>
<tr><td class="own" style="width:10px;"> </td><td><a href="http://link/index.php?view=page2&id=1413" target="_blank" title="title">text</a></td><td><img src="img/icon_4.png" class="icon link" title="icon4" onclick="dothis(118965,[1324,1835,2296,2443,2960,2961,2962,2964,2976,3186,4901,4974]);" /> <a href="javascript:dothat('div1',118965);" title="div1">text</a></td><td><a href="http://link/index.php?view=page3&newid=188898" target="_blank" title="page3">text</a></td><td class="right">24 (9)</td><td class="right">827</td><td class="right">11</td></tr>
MORE SIMILAR TRs HERE
</table>
JS
var savedData = [];
tbl = $('#table_1'); // Grab all content within div, which is a whole html table
var data = [];
$('tr', tbl).each(function(i, tr) {
// Begin the process to grab needed parts
if (i == 0) { // first row is special. it is colspan'ed
row = $('td', tr).html().split(' - '); // Splitting seems like the only way to get smaller html parts to work with
var a_href = $(row).find('a').attr('href'); // returns undefined
var a_href = $(row[0]).find('a').attr('href'); // returns undefined
var a_href = $('a', row).attr('href'); // returns undefined
var a_href = $('a', row[0]).attr('href'); // returns undefined
// Grab id only. I thought this would work
data['id'] = $('a', row[0]).attr('href').match(/view=page&id=([0-9]+)/)[1];
// Grab the other parts
} else {
// do stuff for other rows
}
});
savedData.push[data];
1) Pourquoi suis-je obtenir Undefined? 'row' devient un tableau lors de la division du html interne
2) J'ai aussi au moins 1 tr avec seulement les cellules. Serait-il plus rapide que ces lignes soient exclues du .each(), comme avec un sous-sélecteur, ou simplement l'ignorent (comme if ($('td', tr).length > 0) { // do stuff }
)?
3) Si je récupère tout le texte() de tout td dans tout tr alors l'utilisation de jQuery.map() est environ 3-4 fois plus rapide que jQuery.each (i, v). Une idée pourquoi?
je peux utiliser $('td[colspan], tr)
pour saisir la première rangée, mais jQuery.each() est facile à comprendre et donc de travailler avec
4) Quand je besoin d'utiliser les pièces collectées dans le modèle, puis-je utiliser alors savedData[0].id
?
aide si vous postez votre code de table ainsi. Vous mentionnez que vous avez une ligne avec toutes les balises
J'aurais dû dire que str.split fonctionne bien et comme prévu, 5 entrées de tableau. Tableau ajouté – Kim
Répondre
J'ai eu ma réponse ici How to extract multiple parts from a html string with jQuery?
Source
2010-11-18 14:51:04 Kim
Questions connexes