Search code examples
javascripthtmlcssjqtree

Styling an JS item per level


I am using Jqtree to develop a drag and drop tree, however i would like to style the tree by the node level.

Tree Javascript

  var data = [
  {
      name: 'node1', id: 1,
      children: [
          { name: 'child1', id: 2 },
          { name: 'child1', id: 2, children: [
              { name: 'child7', id: 7 },
              { name: 'child7', id: 8 } ] },
          { name: 'child2', id: 3 }
      ]
  },
  {
      name: 'node2', id: 4,
      children: [
          { name: 'child3', id: 5 },
          { name: 'child4', id: 6 }
      ]
  }
];
$('#tree1').tree({
  data: data,
  autoOpen: true,
  dragAndDrop: true
});

Code to show the tree

$(function() {
    $('#tree1').tree({
        data: data,
        autoOpen: true,
        dragAndDrop: true

    });

I saw the jqtree documentantion however, how do i style or add code only to the results provided by this var?

var node = $('#tree1').tree('getNodeById', 123);
var treelevel = node.getLevel();

Solution

  • You can assign them id's and the style accordingly:

    $('#tree1').tree({
        data: data,
        onCreateLi: function(node, $li) {
            $li.attr('id', 'item' + node.id);
        }
    });
    
    #item5 span{background: red;}
    

    http://jsfiddle.net/2uwb7qwj/