我試圖在點擊具有特定ID的行時隱藏/顯示行的子集。JQuery在點擊時切換行
通過大量的搜索網絡和大量的嘗試,我得到了下面的代碼。
唯一的問題是這個代碼由於某種原因只隱藏/顯示第一組行。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-1.5.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function()
{
$('#rowToClick').click(function()
{
$(this).nextAll('tr').each(function()
{
if ($(this).is('#rowToClick'))
{
return false;
}
$(this).toggle();
});
});
});
</script>
</head>
<body>
<table>
<tr id="rowToClick"><td>ClickMe</td></tr>
<tr id="Tr1"><td>Toggled</td></tr>
<tr id="Tr2"><td>Toggled</td></tr>
<tr id="Tr3"><td>Toggled</td></tr>
<tr id="Tr4"><td>Toggled</td></tr>
<tr id="Tr5"><td>Toggled</td></tr>
<tr id="rowToClick"><td>ClickMe</td></tr>
<tr id="Tr6"><td>Toggled</td></tr>
<tr id="Tr7"><td>Toggled</td></tr>
<tr id="Tr8"><td>Toggled</td></tr>
<tr id="Tr9"><td>Toggled</td></tr>
<tr id="Tr10"><td>Toggled</td></tr>
</table>
</body>
</html>
任何人都有一個建議和/或可能重寫的代碼?
----------更新 - 最終的解決方案-----------
我結束了下面基於布蘭登的輸入解決方案,因爲我想用相同的行爲進行更多的嵌套,就像可摺疊樹視圖一樣。 不幸的是,這意味着我不得不添加一個額外的屬性來跟蹤狀態,但我現在可以忍受,直到我找到另一種方式(例如檢查下一行的可見性)。
$(document).ready(function() {
toggleRows('.module','.namespace');
toggleRows('.namespace','.type');
toggleRows('.type','.member');
});
function toggleRows(parentClass,subClass)
{
$(parentClass).click(function() {
if($(this).attr("value")=="collapsed")
{
$(this).attr("value","expanded");
$(this).nextUntil(parentClass).filter(subClass).toggle(true);
}
else
{
$(this).attr("value","collapsed");
$(this).nextUntil(parentClass).attr("value","collapsed");
$(this).nextUntil(parentClass).toggle(false);
}
});
}
你有沒有想過使用諸如tablesorter的插件? http://blog.pengoworks.com/index。cfm/2008/3/28/Finished-jQuery-Tablesorter-mod-for-Collapsible-Table-Row – iivel 2011-03-29 16:43:15
使用.data()而不是.attr()。它更符合:$(this).data(「value」)和$(this).data(「value」,「expanded」)'。此外,鏈接您的調用,以避免掃描DOM 2x:'$(this).nextUntil(parentClass).data(「value」,「collapsed」)。toggle(false);' – Brandon 2011-03-30 16:23:13