参考 tr 元素

3

我对jquery还不熟悉,所以如果这个问题很傻,请见谅...

$('#sortList tr').each(function()
{
    i = $(this).index();
    v = $(this).find('td:first').text();
    n = $(this).find('td:first').html();  
});

循环遍历表格行,获取每一行的索引、第一个单元格的文本和HTML。一切运作良好,然后我尝试获取下一行的相同内容,结果发现以下问题...
这个可以正常工作... j = $(this).next().index(); 但是这个失败了... v = $(this).next().find('td:first').text(); 这个也失败了... n = $(this).next().find('td:first').html(); 如果 $(this)$(this).next() 都能用于 index(),为什么不能用于 find() 呢?它们不都是指向 tr 的指针吗?
<table border="0" cellspacing="0" cellpadding="0" id="sortList" class="pagetext" width="200">
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('ACCRUAL','Accrual');return false;">Accrual</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('EETAXES','Employee - Taxes');return false;">Employee - Taxes</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('EMPVOLDEDS','Employee - Voluntary Deductions');return false;">Employee - Voluntary Deductions</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('ERMATCH','Employer - 401(k) Match');return false;">Employer - 401(k) Match</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('ERTAXES','Employer - Taxes');return false;">Employer - Taxes</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('GTL','Group Term Life');return false;">Group Term Life</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('MISC','Miscellaneous');return false;">Miscellaneous</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('NETPAY','Net Payroll');return false;">Net Payroll</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('TAXFILEE','Tax Filing - Employee Taxes');return false;">Tax Filing - Employee Taxes</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('TAXFILER','Tax Filing - Employer Taxes');return false;">Tax Filing - Employer Taxes</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('TPCORTAX','Third Party Checks or Tax Checks');return false;">Third Party Checks or Tax Checks</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('TPS','Third Party Sick');return false;">Third Party Sick</a></td>
    </tr>
    <tr>
        <td align='left'><a href="Javascript:;;" OnClick="Javascript:Link_OnClick('WAGE','Wage');return false;">Wage</a></td>
    </tr>
</table>

1
你是否使用了行合并?能否展示一下表格的HTML代码? - Derek
1
http://api.jquery.com/each/ 你不需要定义索引,它已经存在 - Huangism
1
http://jsfiddle.net/sJUZR/1/ -- 我认为这个代码可以工作...你能具体说明一下你的错误吗?另外,你能把你的HTML表格代码发出来吗? - tymeJV
表中有许多行,但它在第一行时出现错误。现在尝试发布表格的HTML代码,但无法确定如何将其放入编辑器中。 - alan shaw
适用于我:http://jsfiddle.net/sJUZR/2/ - tymeJV
显示剩余3条评论
1个回答

0

不确定您的代码出了什么问题,但这个整理过的版本可以工作:

$('#sortList tr').each(function(rowIndex) {
    var $row = $(this),
        $nextRow = $row.next(),
        $td, j, v, n;

    $td = $row.find('td:first');
    j = rowIndex;
    v = $td.text();
    n = $td.html();

    console.log('this row: ' + j + '\t' + v + '\t' + n);

    if ($nextRow.length > 0) {
        $td = $nextRow.find('td:first');
        j = rowIndex + 1; // duh?
        v = $td.text();
        n = $td.html();
        console.log('next row: ' + j + '\t' + v + '\t' + n);
    }

});

http://jsfiddle.net/VxSZf/2/


这最终是一个text()的FF问题。我将文本包装在span中,现在一切都正常了。非常令人恼火。感谢您的帮助。 - alan shaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接