我正在使用一段自动生成包含数据的表的软件,并且我试图添加一些展开/折叠功能。我无法改变表格在软件中的创建方式,所以我试图使用jQuery添加特定的类名称和属性。对预构建表执行属性
我试图重新创建下面的插件使用的布局:Alvaro's Collapsable Table Plugin for jQuery,但是这可能不是最好的方式来做到这一点。
这是该软件生成表:
<link rel='stylesheet' href='http://alvaroveliz.github.io/aCollapTable/stylesheets/app.css' />
<script type="text/javascript" src="http://alvaroveliz.github.io/aCollapTable/javascripts/jquery.min.js"></script>
<script type="text/javascript" src="http://alvaroveliz.github.io/aCollapTable/javascripts/jquery.aCollapTable.js"></script>
<table style="border-collapse:collapse;" class="ls" LID="exampleRS" cellpadding="0">
<tr>
<td class="cRS10 lt" cid="0" uid="10" name="cRS10" type="columnTitle"><span tabIndex="0" class="textItem" ctx="1">Header</span></td>
<td class="cRS12 lt" cid="1" uid="12" name="cRS12" type="columnTitle"><span tabIndex="-1" class="textItem" ctx="2">Value</span></td>
</tr>
<tr>
<td class="cRS15 oh" cid="0" uid="15" name="cRS15" type="section"><span tabIndex="-1" class="textItem" ctx="3">Parent1</span></td>
<td style="text-align:right" class="cRS17 oh" cid="1" uid="17" name="cRS17" type="section"><span tabIndex="-1" class="textItem" ctx="4:3">123</span></td>
</tr>
<tr>
<td class="cRS20 lc" cid="0" uid="20" name="cRS20" type="datavalue"><span tabIndex="-1" class="textItem" ctx="5:6:3">Element2</span></td>
<td style="text-align:right" class="cRS22 lm" cid="1" uid="22" name="cRS22" type="datavalue"><span tabIndex="-1" class="textItem" ctx="6:5:3">123</span></td>
</tr>
<tr>
<td class="cRS20 lc" cid="0" uid="20" name="cRS20" type="datavalue"><span tabIndex="-1" class="textItem" ctx="7:8:3">Element3</span></td>
<td style="text-align:right" class="cRS22 lm" cid="1" uid="22" name="cRS22" type="datavalue"><span tabIndex="-1" class="textItem" ctx="8:7:3">123</span></td>
</tr>
</table>
我手动更新表从阿尔瓦罗的例子复制表:
<link rel='stylesheet' href='http://alvaroveliz.github.io/aCollapTable/stylesheets/app.css' />
<script type="text/javascript" src="http://alvaroveliz.github.io/aCollapTable/javascripts/jquery.min.js"></script>
<script type="text/javascript" src="http://alvaroveliz.github.io/aCollapTable/javascripts/jquery.aCollapTable.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.collaptable').aCollapTable({
startCollapsed: true,
addColumn: false,
plusButton: '<span class="icon-plus-circle"></span>',
minusButton: '<span class="icon-minus-circle"></span>'
});
});
</script>
<table style="border-collapse:collapse;" class="ls collaptable table" LID="exampleRS" cellpadding="0">
<tr>
<td class="cRS10 lt" cid="0" uid="10" name="cRS10" type="columnTitle"><span tabIndex="0" class="textItem" ctx="1">Header</span></td>
<td class="cRS12 lt" cid="1" uid="12" name="cRS12" type="columnTitle"><span tabIndex="-1" class="textItem" ctx="2">Value</span></td>
</tr>
<tr data-id="1" data-parent="">
<td class="cRS15 oh" cid="0" uid="15" name="cRS15" type="section"><span tabIndex="-1" class="textItem" ctx="3">Parent1</span></td>
<td style="text-align:right" class="cRS17 oh" cid="1" uid="17" name="cRS17" type="section"><span tabIndex="-1" class="textItem" ctx="4:3">123</span></td>
</tr>
<tr data-id="2" data-parent="1">
<td class="cRS20 lc" cid="0" uid="20" name="cRS20" type="datavalue"><span tabIndex="-1" class="textItem" ctx="5:6:3">Element2</span></td>
<td style="text-align:right" class="cRS22 lm" cid="1" uid="22" name="cRS22" type="datavalue"><span tabIndex="-1" class="textItem" ctx="6:5:3">123</span></td>
</tr>
<tr data-id="3" data-parent="1">
<td class="cRS20 lc" cid="0" uid="20" name="cRS20" type="datavalue"><span tabIndex="-1" class="textItem" ctx="7:8:3">Element3</span></td>
<td style="text-align:right" class="cRS22 lm" cid="1" uid="22" name="cRS22" type="datavalue"><span tabIndex="-1" class="textItem" ctx="8:7:3">123</span></td>
</tr>
</table>
从原始表格中,我认为我可以识别标签以添加类'data-id'和'data-parent'的唯一方法是通过访问子标签并且它包含'哦',那么它是一个父行,如果它包含'lc',那么它是一个子行。作为一个起点,我试图遍历表中的每个'tr'并指定'data-id',然后将每个'tr'分配给一个'td'类'lc'给一个“数据父”。这是我所尝试过的,但我缺乏。
<link rel='stylesheet' href='http://alvaroveliz.github.io/aCollapTable/stylesheets/app.css' />
<script type="text/javascript" src="http://alvaroveliz.github.io/aCollapTable/javascripts/jquery.min.js"></script>
<script type="text/javascript" src="http://alvaroveliz.github.io/aCollapTable/javascripts/jquery.aCollapTable.js"></script>
<script>
$(document).ready(function(){
\t
\t $("[lid='exampleRS'] tr").each(function(){
\t \t $(this).attr("data-id", $(this).index());
\t });
\t $("[lid='exampleRS'] td.lc").each(function(){
\t \t $(this).closest('tr').attr("data-parent", $(this).closest('tr').find('.data-id').text());
\t });
});
</script>
<table style="border-collapse:collapse;" class="ls" LID="exampleRS" cellpadding="0">
<tr>
<td class="cRS10 lt" cid="0" uid="10" name="cRS10" type="columnTitle"><span tabIndex="0" class="textItem" ctx="1">Header</span></td>
<td class="cRS12 lt" cid="1" uid="12" name="cRS12" type="columnTitle"><span tabIndex="-1" class="textItem" ctx="2">Value</span></td>
</tr>
<tr>
<td class="cRS15 oh" cid="0" uid="15" name="cRS15" type="section"><span tabIndex="-1" class="textItem" ctx="3">Parent1</span></td>
<td style="text-align:right" class="cRS17 oh" cid="1" uid="17" name="cRS17" type="section"><span tabIndex="-1" class="textItem" ctx="4:3">123</span></td>
</tr>
<tr>
<td class="cRS20 lc" cid="0" uid="20" name="cRS20" type="datavalue"><span tabIndex="-1" class="textItem" ctx="5:6:3">Element2</span></td>
<td style="text-align:right" class="cRS22 lm" cid="1" uid="22" name="cRS22" type="datavalue"><span tabIndex="-1" class="textItem" ctx="6:5:3">123</span></td>
</tr>
<tr>
<td class="cRS20 lc" cid="0" uid="20" name="cRS20" type="datavalue"><span tabIndex="-1" class="textItem" ctx="7:8:3">Element3</span></td>
<td style="text-align:right" class="cRS22 lm" cid="1" uid="22" name="cRS22" type="datavalue"><span tabIndex="-1" class="textItem" ctx="8:7:3">123</span></td>
</tr>
</table>
与向前发展,下一步将是巨大的任何援助。
那的Brillia nt,谢谢:)。我将如何去调整这对每个父母下的层次结构?手动模拟创建所需的效果:https://jsfiddle.net/nusy2ay2/ – ashleh
@ashleh https://jsfiddle.net/nusy2ay2/3/ –