在jsTree树中的节点图标,字体很棒

时间:2014-01-01 10:44:15

标签: xml xslt jstree font-awesome

我有一个使用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。

有没有人对这个问题有所了解?

3 个答案:

答案 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");
});