插件?

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/