• 插件?
  • 变化插件(Changed plugin)
  • 勾选框插件(Checkbox plugin)
  • 条件选择插件(Conditionalselect plugin)
  • 右键菜单插件(Contextmenu plugin)
  • Drag & drop plugin(dnd)
  • 惯性加载插件(Massload plugin)
  • 搜索插件(Search plugin)
  • 排序插件(Sort plugin)
  • 状态插件(State plugin)
  • 类型插件(Types plugin)
  • 唯一性插件(Unique plugin)
  • 整行插件(Wholerow plugin)

    插件?

    jsTree 将一些功能从核心移出,成为插件,你需要时才启用此插件。
    plugins配置项是一个数组,数组项是插件名,用于启用插件。

    插件的选项配置见插件 API页面。

    例如,下面示例表示启用了所有官方插件(你可按需启用):

    1. "plugins" : [
    2. "checkbox",
    3. "contextmenu",
    4. "dnd",
    5. "massload",
    6. "search",
    7. "sort",
    8. "state",
    9. "types",
    10. "unique",
    11. "wholerow",
    12. "changed",
    13. "conditionalselect"
    14. ]

    下面将逐一介绍每个插件。

    变化插件(Changed plugin)

    此插件作用是为选择变化时提供更多附加信息。
    一旦在plugins配置项中启用本插件,changed.jstree事件数据中将多一个changed属性,
    这个属性包含一些数据,如最近一次changed.tree事件中的selecteddeselected的节点。

    1. $(function () {
    2. $("#plugins")
    3. .on("changed.jstree", function (e, data) {
    4. console.log(data.changed.selected); // newly selected
    5. console.log(data.changed.deselected); // newly deselected
    6. })
    7. .jstree({
    8. "plugins" : [ "changed" ]
    9. });
    10. });

    示例:https://www.jstree.com/plugins/

    勾选框插件(Checkbox plugin)

    此插件在每个节点前添加一个勾选框,使得多选节点更方便。

    此插件支持三种状态:全部子节点选中、全部未选中、部分选中undetermined。部分选中状态会向上转播状态

    你还可通过设置传播方式的选项进行微调。

    需注意的是,即使一个节点处于禁用状态,勾选框也会受传播的影响。

    半选中状态undetermined是插件自动计算出来的,但当你使用 AJAX 来按需加载节点,
    且想将这些未加载节点的状态设置为半选中状态,那你可传入这个参数:"undetermined" : true

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins1").jstree({
    3. "checkbox" : {
    4. "keep_selected_style" : false
    5. },
    6. "plugins" : [ "checkbox" ]
    7. });
    8. });

    示例:https://www.jstree.com/plugins/

    条件选择插件(Conditionalselect plugin)

    此插件覆盖了activate_node函数,并允许设置成不被回调函数调用。

    1. $(function () {
    2. $("#plugins10").jstree({
    3. "conditionalselect" : function (node, event) {
    4. return false;
    5. },
    6. "plugins" : [ "conditionalselect" ]
    7. });
    8. });

    示例:https://www.jstree.com/plugins/

    右键菜单插件(Contextmenu plugin)

    此插件用于在树中点击右键时弹出一个菜单。
    此菜单可通过具体的配置进行自定义。

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins2").jstree({
    3. "core" : {
    4. // so that create works
    5. "check_callback" : true
    6. },
    7. "plugins" : [ "contextmenu" ]
    8. });
    9. });

    示例:https://www.jstree.com/plugins/

    Drag & drop plugin(dnd)

    此插件允许拖动和释放节点来调整树结构。

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins3").jstree({
    3. "core" : {
    4. "check_callback" : true
    5. },
    6. "plugins" : [ "dnd" ]
    7. });
    8. });

    示例:https://www.jstree.com/plugins/

    惯性加载插件(Massload plugin)

    此插件允许一次请求获得多个节点的数据(与懒加载一起使用)。

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins10").jstree({
    3. "core" : {
    4. "data" : { .. AJAX config .. }
    5. },
    6. "massload" : {
    7. "url" : "/some/path",
    8. "data" : function (nodes) {
    9. return { "ids" : nodes.join(",") };
    10. }
    11. }
    12. "plugins" : [ "massload", "state" ]
    13. });
    14. });

    示例:https://www.jstree.com/plugins/

    搜索插件(Search plugin)

    此插件允许对树的节点进行搜索,并允许只显示搜索到的节点。

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins4").jstree({
    3. "plugins" : [ "search" ]
    4. });
    5. var to = false;
    6. $('#plugins4_q').keyup(function () {
    7. if(to) { clearTimeout(to); }
    8. to = setTimeout(function () {
    9. var v = $('#plugins4_q').val();
    10. $('#plugins4').jstree(true).search(v);
    11. }, 250);
    12. });
    13. });

    示例:https://www.jstree.com/plugins/

    排序插件(Sort plugin)

    此插件自动对兄弟节点进行排序,默认是按字母升序排序。

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins5").jstree({
    3. "plugins" : [ "sort" ]
    4. });
    5. });

    示例:https://www.jstree.com/plugins/

    状态插件(State plugin)

    此插件允许保存节点的打开、选中状态到用户浏览器中,这样下次重新打开页面时可恢复到上次关闭页面时的状态。

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins6").jstree({
    3. "state" : { "key" : "demo2" },
    4. "plugins" : [ "state" ]
    5. });
    6. });

    这个示例中,你可调整里面的节点,然后刷新页面看看节点的状态是否还有保留。
    示例:https://www.jstree.com/plugins/

    类型插件(Types plugin)

    此插件用于为节点设置类型,即按类型形成不同的节点组,使得更容易对嵌套规则、图标等进行操作。

    可用set_type或直接设置节点的type属性值来设置节点的类型。

    插件的选项配置见插件 API页面。

    1. $(function () {
    2. $("#plugins7").jstree({
    3. "types" : {
    4. "default" : {
    5. "icon" : "glyphicon glyphicon-flash"
    6. },
    7. "demo" : {
    8. "icon" : "glyphicon glyphicon-ok"
    9. }
    10. },
    11. "plugins" : [ "types" ]
    12. });
    13. });

    示例:https://www.jstree.com/plugins/

    唯一性插件(Unique plugin)

    此插件强制限制兄弟节点间不能重名。
    此插件没有配置项,其作用在于重命名、拖动节点时防止重名。

    1. $(function () {
    2. $("#plugins8").jstree({
    3. "core" : {
    4. "check_callback" : true
    5. },
    6. "plugins" : [ "unique", "dnd" ]
    7. });
    8. });

    示例:https://www.jstree.com/plugins/

    整行插件(Wholerow plugin)

    使每个节点显示为一整行,而不是仅仅节点的图标和节点名。
    这会使得容易选中节点,但同时也可能会导致旧浏览器中拥有较多节点树较慢。

    1. $(function () {
    2. $("#plugins9").jstree({
    3. "plugins" : [ "wholerow" ]
    4. });
    5. });

    示例:https://www.jstree.com/plugins/