2012-04-05 79 views
0

我對這樣得到一個行的索引:查找行索引的有效方法?

row.parent().children("tr").index(row) 

有沒有找到索引更有效的方法?我有數百行,所以它正在殺死我的表現,我必須選擇所有行才能找到索引。

+0

可能的重複http://stackoverflow.com/questions/788225/table-row-and-column-number-in-jquery – Dhiraj 2012-04-05 06:50:40

回答

5

如何row.prevAll().length

+0

+1!我能夠使用這個:row [0] .rowIndex – TruMan1 2012-04-05 07:47:19

0
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 

<html lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <script type="text/javascript" charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
     console.log($("tr").index($("#my"))); 
    }) 
    </script> 
</head> 
<body> 
    <table border="0" cellspacing="5" cellpadding="5" id="tbl"> 
     <tr><th>Header</th></tr> 
     <tr><td>Data</td></tr> 
     <tr id="my"><th>Header</th></tr> 
     <tr><th>Header</th></tr> 
     <tr><td>Data</td></tr> 
    </table> 
</body> 
</html> 

希望有幫助。乾杯。

+0

沒有-1,但你可以得到一個用'$(「#my」)。index();',在性能問題場景中使用純Javascript不需要超過 – 2012-04-05 07:03:08

0

Id屬性是解析任何html最快的方法。你可以爲你的所有行提供一個Id。

雖然

row.parent("tr").index(); 

索引方法將決定兄妹元素中的指數,它可能會更快看到這個例子http://jsfiddle.net/shNrS/

0

如果您以某種方式獲得對該行的引用(點擊處理程序等),而不是查找該元素的額外開銷,只需.index()它和利潤(雖然注意多個有效但會添加的tbody元素複雜到你的腳本)

如果你索引所有tr元素在運行時,不妨將它緩存在jquery數據中以供將來使用!

0

這裏的最快方法是可能使用普通的JavaScript:

function getRowIndex(elem) { 
    var index = 0; 
    while (elem = elem.previousSibling) { 
     if (elem.tagName == "TR") { 
      ++index; 
     } 
    } 
    return(index); 
}  

工作演示:http://jsfiddle.net/jfriend00/y4anN/

如果你不得不反覆做這個,這不是動態變化的一個大表,那麼你可以只需使用自定義屬性對行進行預編號,然後從此開始,您只需執行一次操作即可從任意行檢索自定義屬性。

你會預先編號的所有使用自定義行屬性是這樣的:

function numberRows(table) { 
    var rows = table.getElementsByTagName("tr"); 
    for (var i = 0; i < rows.length; i++) { 
     rows[i].dataIndex = i; 
    } 
} 

而且,那麼你可以在任何給定的行獲得的索引號是這樣的:

row.dataIndex 

工作演示:http://jsfiddle.net/jfriend00/CR2Wk/