我有一个切换表的特定要求。切换我的意思是一个表格,它会在点击超链接的事件时展开和折叠。
我如何制作表格的片段是:
<table class=".table" border="1">
<tr id="1">
<td><a href="#" class="action" id="a-1">+</a></td>
<td>Superman</td>
</tr>
<tr id="version" class="child 1">
<td></td>
<td>Weight</td>
</tr>
<tr id="type" class="child 1">
<td></td>
<td>Height</td>
</tr>
<tr id="pl-id" class="child 1">
<td><a href="#" class="action" id="a-1-101">+</a></td>
<td>Planet</td>
</tr>
<tr id="KP" class="child 1-101">
<td></td>
<td>KP</td>
</tr>
<tr id="MN" class="child 1-101">
<td></td>
<td>MN</td>
</tr>
..
..
表可以想象有一个排序的结构
1) - Superman
Weight
Height
- Planet
KP
MN
2) + Superman
3) - Superman
- Planet
KP
MN
在第一个状态下点击-
超人应该进入第二个状态而不是第三个状态。
JQuery 我写过这样做:
$().ready(function() {
$('.child').hide();
$('.action').click(function(){
var id = $(this).attr('id');
var idarray=id.split("-");
var len = idarray.length;
if(len==2)
{
id = id.substring(2);
if($(this).parent().parent().next().attr('style')=="display: none; "){
$('tr[class^=child '+id+'-1]').hide();
$('tr[class=child '+id+']').show();
}
if($(this).parent().parent().next().attr('style')=="display: table-row; "){
$('tr[class^=child '+id+'-1]').hide();
$('tr[class=child '+id+']').hide();
}
}
else if(len==3)
{
//HAVEN'T REACHED TILL RESOLVING FOR 3 :(
/*id = id.substring(2);
alert(id);
$("."+id).toggle();
$('tr[class^=child '+id+']').hide();
$('tr[class=child '+id+']').show();*/
}
});
});
在单击超链接时使用此 JQueryid=a-1
display:none block
会执行,但display:table-row
由于其中的显示/隐藏功能,它会自行触发块。没有发生重新单击,那么为什么再次模拟单击事件。我不希望 display:table-row 块被执行。当前,当 html 页面加载时,表处于第二状态,即使在单击+
Superman 后,它仍保持在相同状态,因为 if 和 else 条件都被评估,这使其恢复到原始状态。
如何以简单的方式实现这一要求。我是 JQuery 的新手,尝试了很多事情,我完全糊涂了。有人可以告诉我一种可以做到这一点的方法。请给出一个可行的或接近可行的解决方案。请不要提供文档链接。
谢谢。