如果td类值是' indent0'我需要在上面的2&t;中显示一个展开图标。 ,以及下一个td类值是' indent1',' indent2&#39 ;; 其中indent0 - 表示父节点,indent1 - child,indent2 - grand child。
<div class="panel panel-default">
<div class="table-responsive">
<table class="table table-hover table-condensed">
<tbody>
<? foreach ( $aspects as $a ) {?>
<tr class="js-data-selector"
data-taxonomy-id="<?=$a['taxonomy_id']?>">
<td width="0.5">
<?draw_note_icon (); ?>
</td> <td class="indent<?=$a['indent']?>">
<?=$a['aspect_label']?>: <span class="aspect-data" data-taxonomy-id="<?=$a['taxonomy_id']?>"></span></td>
</tr>
<?}?>
</tbody>
</table>
</div>
</div>
Example
A - indent0
B - indent0
C - indent1
D - indent1
E - indent0
F - indent1
G - indent2
在上面的例子中,B,E,F行应显示展开图标。 有没有办法用jquery来实现这个目的。
下面是我试过的jQuery
$(document).ready(function() {
display_expand_icon();
});
function display_expand_icon(){
var parent_indent = $("table tr").find("td:eq(1)").prop("class").substring(6);
$children = $("table tr td").nextUntil(function() { return $(this).find("td:eq(1)").prop("class") <= "indent"+parent_indent });
$children.prepend(" <span ><img src="../images/expand.png"> ></span>");
}
答案 0 :(得分:0)
我猜你可以在渲染数据时操纵它。不需要使用jQuery。你可以尝试一下。虽然它是非常严格的代码。你可以使它更通用。
function draw_note_icon($i) {
global $aspects;
$curr = $aspects[$i]['indent'];
$nxt = isset($aspects[$i+1]['indent'])?$aspects[$i+1]['indent']:null;
if(!is_null($nxt)) {
if(in_array($nxt, array(2,1))) {
if(($nxt == 2) || ($nxt == 1 && $curr != 1))
echo '+';
}
}
}