2013-04-11 90 views
3

我是新來的jQuery,所以我道歉,如果這是一個愚蠢的問題...引用TR元素

$('#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

您使用rowspans呢?你可以顯示你的HTML表格嗎? – Derek 2013-04-11 19:55:12

+1

http://api.jquery.com/each/你不需要定義索引,它已經存在 – Huangism 2013-04-11 19:56:10

+0

,如果它是表中的最後一行,那麼當然它會失敗,因爲沒有TD從$(this).next() – Derek 2013-04-11 19:56:20

回答

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/

+0

這最終成爲與文本()的FF問題。我將文本封裝在一個範圍內,現在一切正常。很煩人。謝謝您的幫助。 – 2013-04-12 12:43:58