18

我正在使用 jstree 插件根据 xml 文件填充我的树。一些节点文本大于容器 div。有没有办法对jstree节点文本进行文本换行?

$(document).ready(function(){
     $("#tree").jstree({  
         "xml_data" : {  

             "ajax" : {  

                 "url" : "jstree.xml" 

             },  

             "xsl" : "nest"


         },  
         "themes" : {  

             "theme" : "classic",  

            "dots" : true,  

             "icons" : true 

         },  

        "search" : {  

                 "case_insensitive" : true,  

                 "ajax" : {  

                     "url" : "jstree.xml" 

                 }  

             },  
              "plugins" : ["themes", "xml_data", "ui","types", "search"] 


    }).bind("select_node.jstree", function (event, data) {

        $("#tree").jstree("toggle_node", data.rslt.obj);
4

6 回答 6

18

这适用于 3.0.8

.jstree-anchor {
    /*enable wrapping*/
    white-space : normal !important;
    /*ensure lower nodes move down*/
    height : auto !important;
    /*offset icon width*/
    padding-right : 24px;
}

对于那些使用wholerow插件的人;

//make sure the highlight is the same height as the node text
$('#tree').bind('hover_node.jstree', function() {
    var bar = $(this).find('.jstree-wholerow-hovered');
    bar.css('height',
        bar.parent().children('a.jstree-anchor').height() + 'px');
});

对于 3.1.1,以及它也可以select_node.jstree使用此函数:

function(e, data) {
    var element = $('#' + data.node.id);
    element
        .children('.jstree-wholerow')
        .css('height', element.children('a').height() + 'px')
    ;
}
于 2014-12-01T06:04:24.777 回答
11

尝试将以下样式添加到 jsTree div 的子锚点:

#jstree_div_id a {
    white-space: normal !important;
    height: auto;
    padding: 1px 2px;
}

我的 jsTree div 样式也有一个最大宽度:

#jstree_div_id
{
    max-width: 200px;
}
于 2013-12-10T20:51:34.820 回答
1
#tree_id {
  .jstree-anchor {
    white-space: normal;
    height: auto;
  }
  .jstree-default .jstree-anchor {
    height: auto;
  }
}
于 2014-07-02T16:33:08.020 回答
1

将 Hashbrown 和 TwiceB 的答案放在一起,使其与 Wholerow 插件和预选数据一起使用。

启用文本换行

.jstree-anchor {
    /*enable wrapping*/
    white-space : normal !important;
    /*ensure lower nodes move down*/
    height : auto !important;
    /*offset icon width*/
    padding-right : 24px;
}

启用悬停时突出显示包装文本并选择

$('#tree').bind('open_node.jstree', function () {
    let bar = $(this).find('.jstree-wholerow-clicked');
    bar.css('height',
        bar.parent().children('a.jstree-anchor').height() + 'px');
});
$('#tree').bind('hover_node.jstree', function () {
    var bar = $(this).find('.jstree-wholerow-hovered');
    bar.css('height',
        bar.parent().children('a.jstree-anchor').height() + 'px');
});
于 2019-01-17T23:34:01.247 回答
0

我通过巧合找到了答案,它对我有用,但是,我有另一个 css 规则阻止代码正常运行

我在“我的代码”中删除了 css 规则 (min-height:200px),以下答案对我有用,如我所料。

#tree_div_id a {
white-space: normal;
height: auto;
padding: 0.5ex 1ex;
margint-top:1ex;
}
于 2015-05-19T11:05:24.757 回答
0

这个问题在下面得到解决。

https://www.npmjs.com/package/treeview-sample

根据此示例,文件夹 DOM 将输出以下内容。

<a class="jstree-anchor jstree-anchor-formatted" href="#" tabindex="-1" role="treeitem" aria-selected="false" aria-level="3" id="grandchild2_anchor" title="Human">
  <i class="jstree-icon jstree-themeicon" role="presentation"></i>
  <span class="jstree-anchor-text">Human</span>
</a>
于 2021-11-18T03:53:38.677 回答