jQuery需要基于rowspan循环遍历下一个元素

时间:2012-01-30 08:38:04

标签: jquery attr html-table

嗯,基本上,我有一个像这样设置的表,但是<td>个元素可以有任意数量的rowpans ......

<table width="100%">
    <tr class="tablerow0">
        <td class="tablecol_0" colspan="4">Content</td>
    </tr>
    <tr class="tablerow1">
        <td class="tablecol_0" rowspan="2">More Content</td>
        <td class="tablecol_1" colspan="3">Some More Content</td>
    </tr>
    <tr class="tablerow2">
        <td class="tablecol_1">And Yet More Content</td>
        <td class="tablecol_2">Content</td>
        <td class="tablecol_3">Content</td>
    </tr>
</table>

好的,我想做的是确定可以这样做的行数的数量:

$("td").each(function() {
    $(this).attr('rowspan');
});

但是我需要return false每个行的每个函数大于1。例如,当它找到行数为2的元素时,它不应该继续到下一个元素,因为rowspan附加到下一个元素。但更重要的是,我需要遍历<tr>元素的行标。

示例,如果我有此表设置:

<table width="100%">
    <tr class="tablerow0">
        <td class="tablecol_0" rowspan="2">Content</td>
        <td class="tablecol_1">Content</td>
        <td class="tablecol_2">Content</td>
    </tr>
    <tr class="tablerow1">
        <td class="tablecol_1">More Content</td>
        <td class="tablecol_2">Some More Content</td>
    </tr>
    <tr class="tablerow2">
        <td class="tablecol_1">And Yet More Content</td>
        <td class="tablecol_2">Content</td>
        <td class="tablecol_3">Content</td>
    </tr>
</table>

需要使用<tr>获取此处的最后class="tablerow2",因为行数仅涵盖tablerow0tablerow1

希望你理解我的意思,它需要能够在<td>元素中循环,并且只有在超过rowspan数量时才能执行某些操作表。 rowspan可以超过2,我只是简化了这个,以便人们掌握我在这里要求的内容。此外,行数大于1的<tr>元素可能超过1个,因此它也应该能够知道这一点。我想我需要在这里构建一个rowpans数组,数组长度将基于每个<td> rowspan值。

1 个答案:

答案 0 :(得分:1)

//cache the tr elements to loop through them
var $TRs = $('tr');

//this type of loop will perform quickly
for (var i = 0, len = $TRs.length; i < len; i++) {

    //check to make sure the last TR element doesn't have a TD child element with a rowspan attribute
    if (i == 0 || $TRs.eq(i - 1).children('[rowspan]').length == 0) {
        //we are on the first TR element or the previous TR element does not have a child TD element with a rowspan attribute
    }
}

您还可以将[rowspan]更改为[rowspan=2]以检查特定的行数值。

以下是演示:http://jsfiddle.net/JyQYW/

更新

以下是检查超过rowspan=2

的简单示例
if (i == 0 || ($TRs.eq(i - 1).children('[rowspan=2]').length == 0 && (i > 1 && $TRs.eq(i - 2).children('[rowspan=3]').length == 0)) && (i > 2 && $TRs.eq(i - 3).children('[rowspan=4]').length == 0))) {

新代码检查以确保我们有足够的行,然后检查最后三行是否影响当前行。