我有以下代码:
$('.wpFolders.co_files').bind('select_node.jstree', function (event, data) {
getFileById(data.args[0].hash.replace('#', ''));
}).jstree({
'plugins' : ['html_data','themes','ui','types'],
'ui' : {
'select_limit' : 1
},
'core' : {
'animation' : 0
},
'types': {
'default' : {
'icon' : {
'image' : '/admin/views/images/file.png'
}
}
}
});
我有一个基本的无序列表,我希望将其显示为文件列表。我正在尝试使用“类型”来更改图标,但我不能为我的生活找出如何做到这一点。我检查了他们的文档link,即使使用几乎相同的代码,似乎也没有发生任何事情。
根据我对上面代码的理解,我的树的默认类型应该有我指定的图标但没有任何反应,我得到的是默认文件夹图标。
有什么想法吗?很抱歉,如果问题看起来很基本,但我发现在尝试做基本的事情时很难遵循文档。 :)
答案 0 :(得分:23)
我可以使用以下CSS替换多个图标,而无需使用Types插件。希望这对其他人也有帮助!
/* replace folder icons with another image, remove leaf image */
li.jstree-open > a .jstree-icon {background:url("imageOpen.gif") 0px 0px no-repeat !important;}
li.jstree-closed > a .jstree-icon {background:url("imageClosed.gif") 0px 0px no-repeat !important;}
li.jstree-leaf > a .jstree-icon { display: none; }
/* replace checkbox icons */
li.jstree-unchecked > a .jstree-checkbox, li.jstree-undetermined > a .jstree-checkbox
{
background:url("uncheckedImage.png") 0px 0px no-repeat !important;
width: 32px;
height: 29px;
padding-top: 5px;
}
li.jstree-checked > a .jstree-checkbox
{
background:url("checkedImage.png") 0px 0px no-repeat !important;
width: 32px;
height: 29px;
padding-top: 5px;
}
答案 1 :(得分:21)
头痛之后...... 我找到了解决方案。
<li data-jstree='{"icon":"path/file.png"}'></li>
我建议不要修改css代码。
PS“类型”插件不是必需的。
答案 2 :(得分:15)
两个问题:
我在我的数组中忘了一个声明类型的级别,代码必须如下所示:
$('.wpFolders.co_files').bind('select_node.jstree', function (event, data) {
getFileById(data.args[0].hash.replace('#', ''));
}).jstree({
'plugins' : ['html_data','themes','ui','types'],
'ui' : {
'select_limit' : 1
},
'core' : {
'animation' : 0
},
'types': {
'types' : {
'file' : {
'icon' : {
'image' : '/admin/views/images/file.png'
}
},
'default' : {
'icon' : {
'image' : '/admin/views/images/file.png'
},
'valid_children' : 'default'
}
}
}
});
我真的不明白为什么我的代码在WYSIWYG中破坏了,对不起,如果它很难看。无论如何,我希望这可以帮助别人。
答案 3 :(得分:13)
您可以使用新API更改图标,不使用HTML,CSS或插件。
$("#tree").jstree(true).set_icon(nodeId, "/images/blabla.png");
答案 4 :(得分:8)
要隐藏文件夹图标,请使用以下命令:
<style type="text/css">
.jstree li > a > .jstree-icon { display:none !important; }
</style>
答案 5 :(得分:4)
jstree包含自己的文件图标(除了默认文件夹图标),将'icon': 'jstree-file'
属性添加到节点以显示它
答案 6 :(得分:3)
根据级别更改图标的方法:
jQuery('#tree-edit').on('changed.jstree', function(e, data) {
//do something
}).on("open_node.jstree", function(event, data) {
jQuery.each(data.instance._model.data, function(key, val) {
console.log(key + ", " + val);
if (key.length < 4 || key=='#') {
jQuery.jstree.reference("#tree-edit").set_type(val, "selectable");
}
});
}).on("loaded_node.jstree", function(event, data) {
console.log(data);
}).jstree({
'plugins': ["search", "types"],
'core': {
'data': {
'url': 'http://www.google.com/json',
'data': function(node) {
return {'id': node.id};
}
}
},
'types': {
'selectable': {
'icon': 'http://elpidio.tools4software.com/images/icon-ok-small.png'
},
'default': {
'icon': 'http://www.fabulatech.com/printer-for-remote-desktop-server-help/img/icons/warning-small.gif'
}
},
});
答案 7 :(得分:1)
在尝试了这么多配置失败后,我发现了一个好主意!
通过使用在线照片编辑器https://pixlr.com/editor/,我在路径下打开了图标图像文件:
jstree\themes\default\32px.png
我打开了我要替换的文件夹图标
轻松更换并保存:) 我认为这是经过2小时奋斗后最好的。
答案 8 :(得分:0)
试试这段代码:
lst_item = [];
$('#city_tree li').each(function(){ lst_item.push($(this).attr('id')); });
$('#city_tree').jstree(true).set_icon(lst_item, "/static/global/plugins/jstree/province.png");
答案 9 :(得分:0)
以下脚本适合我:
$('div#jstree').on('ready.jstree click', function (e, data) {
$('i.jstree-icon').removeClass('jstree-themeicon jstree-icon').addClass('fa fa-lg fa-user');
});