我有一个使用jsTree的树结构,如下所示:
<div id="jstree">
<ul>
<li>Root 1
<li> Child 1</li>
</li>
</ul>
</div>
我想将font-awesome的图标放在根和孩子身上。 Here解释了如何使用bootstrap,下面和示例:
<li data-jstree='{"icon":"glyphicon glyphicon-leaf"}'>Child</li>
我试过这样做:
<li data-jstree='{"icon":"fa fa-user fa-2x"}'>
这是浏览器告诉我的错误:
表达式“icon”中的字符(:)无效:“fa fa-user fa-2x”
我还应该提到我正在使用XML和XSL。
有没有人对这个问题有所了解?
答案 0 :(得分:9)
如果您在XSLT代码中有<li data-jstree='{"icon":"fa fa-user fa-2x"}'>
,那么我认为您希望<li data-jstree='{{"icon":"fa fa-user fa-2x"}}'>
阻止XSLT引擎将属性值作为属性值模板处理。
答案 1 :(得分:5)
您可以使用以下设计:
<div id="jstree">
<ul>
<li data-jstree='{"opened":true,"icon":"fa fa-folder-open"}'>Accounts
<ul>
<li data-jstree='{"icon":"fa fa-folder"}'>Account 1
<ul>
<li data-jstree='{"icon":"fa fa-file"}'>File 1</li>
<li data-jstree='{"icon":"fa fa-file"}'>File 2</li>
</ul>
</li>
<li data-jstree='{"icon":"fa fa-folder"}'>Account 2
<ul>
<li data-jstree='{"icon":"fa fa-file"}'>File 1</li>
<li data-jstree='{"icon":"fa fa-file"}'>File 2</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
您可以更改文件夹打开或关闭后的外观:
// 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');
});
答案 2 :(得分:0)
您还可以在加载树后以及节点打开时添加要与FA一起使用的类:
$('#my-tree').jstree({
// --
// your options
// --
}).on('open_node.jstree', function(e, data){
$(".jstree-icon.jstree-themeicon").removeClass("jstree-icon jstree-themeicon").addClass("fa fa-users");
}).on('loaded.jstree', function(e, data) {
$(".jstree-icon.jstree-themeicon").removeClass("jstree-icon jstree-themeicon").addClass("fa fa-users");
});