【问题标题】:How to wrap jstree children with span so that i can group them如何用跨度包装jstree子项以便我可以对它们进行分组
【发布时间】:2019-01-01 17:53:42
【问题描述】:

我想用span 包裹整个children,这样我就可以给他们背景颜色

我想像下面这样包装所有孩子

  <span class="children-group-wrapper">
     <span>Group Child 1</span>
     <span>Group Child 2</span>
  </span>

CSS:

span.children-group-wrapper{border:1px solid orange;}

我正在创建这两个节点 Group Child 1Group Child 2,代码如下:

$('#using_json_2').jstree().create_node('ajson2',  obj, "last");

以下是我想要的输出(认为边框是完美的边框):

注意:我不想使用 html jstree

var treeData = [
  { "id" : "ajson1", "parent" : "#", "text" : "Simple root node"},
  { "id" : "ajson2", "parent" : "#", "text" : "Root node 2"}
];

var childrenGroup = [
  { "id" : "ajson3", "parent" : "ajson2", "text" : "Group Child 1",children:false,"icon":"fa fa-file-o",groupClass:'children-group-wrapper1'},
  { "id" : "ajson4", "parent" : "ajson2", "text" : "Group Child 2",children:false,"icon":"fa fa-file-o",groupClass:'children-group-wrapper1'},
   { "id" : "ajson5", "parent" : "ajson2", "text" : "2nd Group Child 1",children:false,"icon":"fa fa-file-o",groupClass:'children-group-wrapper2'},
    { "id" : "ajson6", "parent" : "ajson2", "text" : "2nd Group Child 2",children:false,"icon":"fa fa-file-o",groupClass:'children-group-wrapper2'}
];

var myTree = $('#using_json_2').jstree({ 'core' : {
   "check_callback": true,
   'data' : treeData // Use it here
}});

myTree.on('changed.jstree', function(e, data) {
   childrenGroup.forEach(function(obj){
      $('#using_json_2').jstree().create_node('ajson2',  obj, "last");
   });
    $('#using_json_2').jstree().open_node('ajson2');
});
.children-group-wrapper1{
   border:1px solid orange;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" rel="stylesheet"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>


<div id="using_json_2"> </div>

请帮助我提前谢谢!!!!!!!!!!!!

【问题讨论】:

  • 你在sn-p中已经有了你想要的输出,你想做什么?
  • 我希望将这两个 childrenspanclass="children-group-wrapper" 包裹起来,这样我就可以给出整个 border,如图所示
  • 请原谅我在图像中的border 行,将其视为整个包装器border
  • 您想在加载 jstree 时应用该类还是想在点击时应用它?
  • 以下解决方案不能解决我的2组分离问题,请提供您的解决方案。提前谢谢!!!

标签: javascript jquery jstree


【解决方案1】:

你现在已经有了树的 id,你可以给它添加类并让它工作。

$("#ajson2").addClass("children-group-wrapper")

var treeData = [{
    "id": "ajson1",
    "parent": "#",
    "text": "Simple root node",
    
  },
  {
    "id": "ajson2",
    "parent": "#",
    "text": "Root node 2",
    
  }
];

var childrenGroup = [{
    "id": "ajson3",
    "parent": "ajson2",
    "text": "Group Child 1",
    children: false,
    "icon": "fa fa-file-o"
  },
  {
    "id": "ajson4",
    "parent": "ajson2",
    "text": "Group Child 2",
    children: false,
    "icon": "fa fa-file-o"    
  }
];

var myTree = $('#using_json_2').jstree({
  'core': {
    "check_callback": true,
    'data': treeData // Use it here
  }
});

myTree.on('changed.jstree', function(e, data) {
  childrenGroup.forEach(function(obj) { 
    $('#using_json_2').jstree().create_node('ajson2', obj, "last");
  });
  $('#using_json_2').jstree().open_node('ajson2');
  $("#ajson2").addClass("children-group-wrapper")
});
.children-group-wrapper {
  border: 1px solid orange;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" rel="stylesheet" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>


<div id="using_json_2"></div>

如果你想将类应用到 li 你可以使用 jstree 的新支持属性

"li_attr": {
      "class": "children-group-wrapper"
    }

这会将类属性添加到 li。

编辑:

var treeData = [{
    "id": "ajson1",
    "parent": "#",
    "text": "Simple root node"
  },
  {
    "id": "ajson2",
    "parent": "#",
    "text": "Root node 2"
  }
];

var childrenGroup = [{
    "id": "ajson3",
    "parent": "ajson2",
    "text": "Group Child 1",
    children: false,
    "icon": "fa fa-file-o",
    groupClass: 'children-group-wrapper1',
    "li_attr": {
      "class": "children-group-wrapperOpen"
    }
  },
  {
    "id": "ajson4",
    "parent": "ajson2",
    "text": "Group Child 2",
    children: false,
    "icon": "fa fa-file-o",
    groupClass: 'children-group-wrapper1',
    "li_attr": {
      "class": "children-group-wrapperClosed"
    }
  },
  {
    "id": "ajson5",
    "parent": "ajson2",
    "text": "2nd Group Child 1",
    children: false,
    "icon": "fa fa-file-o",
     "li_attr": {
      "class": "children-group-wrapper1Open"
    }
   
  },
  {
    "id": "ajson6",
    "parent": "ajson2",
    "text": "2nd Group Child 2",
    children: false,
    "icon": "fa fa-file-o",
     "li_attr": {
      "class": "children-group-wrapper1Closed"
    }
  }
];

var myTree = $('#using_json_2').jstree({
  'core': {
    "check_callback": true,
    'data': treeData // Use it here
  }
});

myTree.on('changed.jstree', function(e, data) {
  childrenGroup.forEach(function(obj) {
    $('#using_json_2').jstree().create_node('ajson2', obj, "last");
  });
  $('#using_json_2').jstree().open_node('ajson2');
});
.children-group-wrapperOpen {
  border: 1px solid orange;
  border-bottom: 0px;
}

.children-group-wrapperClosed {
  border: 1px solid orange;
  border-top: 0px;
}

.children-group-wrapper1Open {
  border: 1px solid red;
  border-bottom: 0px;
}

.children-group-wrapper1Closed {
  border: 1px solid red;
  border-top: 0px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" rel="stylesheet" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>


<div id="using_json_2"></div>

【讨论】:

  • 我已经接受了你的问题,但是,如果我想要另外 2 个项目在下面有单独的组,Group Child 1, Group Child 2。我该怎么做?
  • 我已经编辑了我的问题 请查看输出
  • 对于2nd Group Child 1,2nd Group Child 2,我希望它们在red border动态。请帮帮我
  • @EaB 您对此有何期待?
  • 我有群组上传,所以无论上传到群组中的哪个我想用不同的边框显示它们,例如orange &amp; red。请帮我把2nd Group Child 1 &amp; 2nd Group Child 2变成红色 border 动态
猜你喜欢
  • 2020-12-10
  • 2022-06-27
  • 2015-02-18
  • 1970-01-01
  • 2010-11-07
  • 2018-05-03
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
相关资源
最近更新 更多