JsTree:使用"类型"插件更改文件夹的"打开"图标

Cap*_*ble 7 javascript jquery jstree

使用"类型"插件可以轻松指定关闭文件夹的图标.但是类型插件是否也可用于指定打开的文件夹应该是什么样的,或者我只能用CSS执行此操作(如下所示)?

li.jstree-open > a .jstree-icon 
{
    background:url("folder_open.png") 0px 0px no-repeat !important;
} 
Run Code Online (Sandbox Code Playgroud)

Li-*_*Yip 6

一种可能的解决方案是使用两个types-一个用于打开的文件夹,一个用于关闭的文件夹。更改节点type很容易。

从我的另一个答案

<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)


jee*_*eev 5

@第七元素:

问题中的代码本身就是答案,效果很好。对于开放节点使用

li.jstree-open > a .jstree-icon { background:url("/images/favorites.png") 0px 0px no-repeat !important; }
Run Code Online (Sandbox Code Playgroud)

对于封闭节点使用

li.jstree-closed > a .jstree-icon { background:url("/images/favorites.png") 0px 0px no-repeat !important; }
Run Code Online (Sandbox Code Playgroud)

干杯

  • 我知道上面的CSS可以工作,所以才发布了它。但是,我的问题是:“可以使用类型插件代替” ... (3认同)

Zin*_*Min 5

如果你们想使用jQuery和bootstrap图标,这是我的解决方案。

[注意:我使用glyphicon-folder-open引导图标来打开文件夹,使用glyphicon-folder-close引导图标来关闭文件夹。

// bind customize icon change function in jsTree open_node event. 
$('#your-jstree').on('open_node.jstree', function(e, data){
   $('#' + data.node.id).find('i.jstree-icon.jstree-themeicon').first()
        .removeClass('glyphicon-folder-close').addClass('glyphicon-folder-open');
});

// bind customize icon change function in jsTree close_node event. 
$('#your-jstree').on('close_node.jstree', function(e, data){
   $('#' + data.node.id).find('i.jstree-icon.jstree-themeicon').first()
        .removeClass('glyphicon-folder-open').addClass('glyphicon-folder-close');
});
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是超棒的字体:

// bind customize icon change function in jsTree open_node event. 
$('#jstree').on('open_node.jstree', function(e, data){
    var icon = $('#' + data.node.id).find('i.jstree-icon.jstree-themeicon').first();
    icon.removeClass('fa-folder').addClass('fa-folder-open');
});

// bind customize icon change function in jsTree close_node event. 
$('#jstree').on('close_node.jstree', function(e, data){
    var icon = $('#' + data.node.id).find('i.jstree-icon.jstree-themeicon').first();
    icon.removeClass('fa-folder-open').addClass('fa-folder');
});
Run Code Online (Sandbox Code Playgroud)


Rad*_*dek 0

看来你需要使用CSS

li.jstree-open[rel=TYPE]{  background:url("openimage.gif") 0px 0px no-repeat !important; }
li.jstree-closed[rel=TYPE]{  background:url("closedimage.gif") 0px 0px no-repeat !important; }
li.jstree-leaf[rel=TYPE]{  background:url("leafimage.gif") 0px 0px no-repeat !important; }
Run Code Online (Sandbox Code Playgroud)

更多信息请参见jsTree 论坛