jQuery有条件地提取内容

时间:2011-08-23 22:18:01

标签: jquery html html-table extract

鉴于此表:

<table id="issuetbl">
    <tr> <td>aaaa</td> <td><div>whatever</div></td> <td>cccc</td> </tr> 
    <tr> <td>1111</td><td class="ms-vb"><p>What about rest of line.&nbsp;</p><p>&nbsp;this needs to show uptoo</p></td> <td>2222</td> </tr> 
    <tr> <td>3333</td> <td><div>else</div></td> <td>4444</td> </tr> 
</table>

这个jQuery脚本在匹配后拉出两个tds(这里是1111)..至少在我们在内容中添加一些换行符之前它已经完成了。它现在只能拉到最后。只返回: 剩下的线路怎么样?

var bodyprefixes = [];
$('#issuetbl td:contains(1111)').nextAll().each(function(i, k) {
    var td = $(k), div = td.children();
    bodyprefixes.push(div.length ? div.html() : td.html());
});
alert(bodyprefixes[0]);
alert(bodyprefixes[1]);

这是https://stackoverflow.com/users/262056/stephen

的一个很好的解决方案

这是在这里工作: http://jsfiddle.net/8RvgA/3/

有人知道如何获得1111的完整标准吗?

3 个答案:

答案 0 :(得分:0)

类似的东西:

$('#issuetbl td:contains(1111)').parent()

...不知道如果这是你想要的,我只是在黑暗中拍摄。

答案 1 :(得分:0)

如果您不需要实体:

bodyprefixes.push(td.text());

如果你这样做,你必须遍历td的所有孩子

答案 2 :(得分:0)

不太确定这是否是你想要的。但是如果你只想要同一行中td值为'1111'的所有数据,那么这应该是:http://jsfiddle.net/rkw79/8RvgA/4/

$('#issuetbl td:contains(1111)').nextAll().each(function(i, k) {
    bodyprefixes.push($(k).text());
});

使用.text()将删除标记并忽略所有空格

使用代码进行了更新: http://jsfiddle.net/rkw79/8RvgA/5/

$('#issuetbl td:contains(1111)').nextAll().each(function(i, k) {
    bodyprefixes.push($(k).html());
});