使用 jQuery 从呈现的 HTML 表中提取部分的问题
Posted
技术标签:
【中文标题】使用 jQuery 从呈现的 HTML 表中提取部分的问题【英文标题】:Problems extracting parts from rendered HTML tables with jQuery 【发布时间】:2011-05-08 18:47:03 【问题描述】:我需要从许多表中获取某些部分,保存它们,最后使用 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) 为什么我得到 undefined ? 'row' 在拆分内部 html 时变成一个数组
2) 我也有至少 1 个 tr 只有 th 个单元格。它会加快那些从 .each() 中排除的行,例如使用子选择器,还是忽略它(例如 if ($('td', tr).length > 0) // do stuff
)?
3) 如果我只是从所有 tr 中的所有 td 中获取所有 text(),那么使用 jQuery.map() 比 jQuery.each(i,v) 快大约 3-4 倍。知道为什么吗?
我可以使用$('td[colspan], tr)
来抓取第一行,但是 jQuery.each() 很容易理解,因此可以使用
4)当我需要使用模板中收集的部分时,我可以使用savedData[0].id
吗?
【问题讨论】:
如果您也发布表格代码,会有所帮助。你提到你有一行包含所有我在这里得到了答案How to extract multiple parts from a html string with jQuery?
【讨论】:
以上是关于使用 jQuery 从呈现的 HTML 表中提取部分的问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 查找 XML 节点并放入现有的 HTML 表中
使用 AJAX 解析从 ASP 页面返回的 HTML 表并提取特定单元格