【发布时间】:2019-04-10 12:11:11
【问题描述】:
我有一个 jstree(版本 3.0.0)。我已经用 json 生成了树。树是一层深。它看起来像
- 父母1
- 孩子1
- 孩子2
- 父母2
- 孩子3
- 孩子4
如果我点击每个孩子,它的相应信息就会显示出来。
问题: 我没有内容可以显示给家长。所以如果我点击 parent ,它的第一个孩子应该自动被选中。有没有办法做到这一点?
例如:如果单击Parent1,则应显示Child1 内容,对于Parent2,应显示Child3 内容。
我曾尝试使用点击事件以及添加和删除类来做到这一点,但没有得到想要的结果。请参阅下面的代码:
<div id="mytree"></div>
<p class="hidden pele" id="dog">I'm Dog</p>
<p class="hidden pele" id="lion">I'm Lion</p>
<p class="hidden pele" id="mobile">I'm Mobile</p>
<p class="hidden pele" id="lappy">I'm Lappy</p>
var arrayCollection = [
{"id": "animal", "parent": "#", "text": "Animals", "state": {"selected": true}},
{"id": "device", "parent": "#", "text": "Devices"},
{"id": "dog", "parent": "animal", "text": "Dogs"},
{"id": "lion", "parent": "animal", "text": "Lions"},
{"id": "mobile", "parent": "device", "text": "Mobile Phones"},
{"id": "lappy", "parent": "device", "text": "Laptops"},
];
var all_p = $('.pele');
$('#mytree').jstree({
'core': {
'data': arrayCollection
}
}).on(
"select_node.jstree", function(evt, data){
all_p.each(function(){
if(this.id === data.node.id){
$(this).removeClass('hidden');
}else{
if(!$(this).hasClass('hidden')){
$(this).addClass('hidden');
}
}
})
});
$("#mytree >ul >li >a").on('click', function(){
$(this).prev('i').trigger('click');
$(this).next('ul.jstree-children li a').toggleClass('jstree-clicked');
});
小提琴链接:https://jsfiddle.net/khz65nv0/3/
例如:如果单击Parent1,则应显示Child1 内容,对于Parent2,应显示Child3 内容。
【问题讨论】:
标签: javascript jquery jstree