我對這樣得到一個行的索引:查找行索引的有效方法?
row.parent().children("tr").index(row)
有沒有找到索引更有效的方法?我有數百行,所以它正在殺死我的表現,我必須選擇所有行才能找到索引。
我對這樣得到一個行的索引:查找行索引的有效方法?
row.parent().children("tr").index(row)
有沒有找到索引更有效的方法?我有數百行,所以它正在殺死我的表現,我必須選擇所有行才能找到索引。
<!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>
希望有幫助。乾杯。
沒有-1,但你可以得到一個用'$(「#my」)。index();',在性能問題場景中使用純Javascript不需要超過 – 2012-04-05 07:03:08
Id屬性是解析任何html最快的方法。你可以爲你的所有行提供一個Id。
雖然
row.parent("tr").index();
索引方法將決定兄妹元素中的指數,它可能會更快看到這個例子http://jsfiddle.net/shNrS/
如果您以某種方式獲得對該行的引用(點擊處理程序等),而不是查找該元素的額外開銷,只需.index()
它和利潤(雖然注意多個有效但會添加的tbody
元素複雜到你的腳本)
如果你索引所有tr
元素在運行時,不妨將它緩存在jquery數據中以供將來使用!
這裏的最快方法是可能使用普通的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://stackoverflow.com/questions/788225/table-row-and-column-number-in-jquery – Dhiraj 2012-04-05 06:50:40