单击jstree上的更改图标

car*_*noo 6 javascript css jstree meteor

我有使用jstree插件的代码.

$(".gems-tree").on('changed.jstree' , function( event , data ){
  console.log("folder clicked");
});
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但现在我想将文件夹中的图标更改为关闭打开,是否有办法实现这一目标?

注意

已经尝试过 data.node.state.opened = true只是为了查看文件夹图标是否发生了变化.

vak*_*ata 6

如果您需要更改每个选定节点的图标,由阿德南Y中的答案就可以了(只要确保data.action"select_node"):

$("#jstree2").on('changed.jstree', function(evt, data) {
  if(data.action === "select_node") {
    data.instance.set_icon(data.node, 'http://jstree.com/tree-icon.png');
  }
});
Run Code Online (Sandbox Code Playgroud)

如果您需要对节点打开和关闭做出反应,请使用类似的代码:

$("#jstree2")
  .on('open_node.jstree', function(evt, data) {
    data.instance.set_icon(data.node, 'http://jstree.com/tree-icon.png');
  })
  .on('close_node.jstree', function(evt, data) {
    data.instance.set_icon(data.node, true);
  });
Run Code Online (Sandbox Code Playgroud)

在第二个示例中,图标设置为true- 这将恢复为默认图标(如果这是您需要的).


Li-*_*Yip 5

可以使用jstreetypes插件来完成。

这是一个font-awesome用于文件夹图标的示例。

<div id="jstree_menu"></div>
<script>
/* Load menu tree data */
$('#jstree_menu').jstree(
    {
        'core' : {
            'data' : {
                'url' : '/jstree-menu-data/index.html',
            }
        },
        'plugins' : [ "types" ],
        'types' : {
            'default' : {
                'icon' : 'fa fa-angle-right fa-fw'
            },
            'f-open' : {
                'icon' : 'fa fa-folder-open fa-fw'
            },
            'f-closed' : {
                'icon' : 'fa fa-folder fa-fw'
            }
        }
    }
);

/* Toggle between folder open and folder closed */
$("#jstree_menu").on('open_node.jstree', function (event, data) {
    data.instance.set_type(data.node,'f-open');
});
$("#jstree_menu").on('close_node.jstree', function (event, data) {
    data.instance.set_type(data.node,'f-closed');
});
</script>
Run Code Online (Sandbox Code Playgroud)