如何显示父节点的展开图标?

时间:2015-11-12 07:45:27

标签: javascript jquery html

如果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>");
}

1 个答案:

答案 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 '+';
    }
  }
}