javascript - 动态嵌套可折叠javascript
问题描述
我在左侧有一个菜单。在它下面有一个叫做vod的子菜单,在vod下面有主题,在主题下有主题,在主题下有一些视频。以及所有这些数据都来自 ajax 调用受尊敬的 api(如 class-> class 10,class 11,class12; class10-> maths,english; maths-> algebra,calculus; algebra-> respected video 等等)
这是第一级
<div id="vodExpand" class="navbar nav1" style="display:none">
</div>
function liveVODKK(){
$('#replaceUpcoming').css('display','none');
$('#upcomingSchedule').css('display','none');
$('#liveChannel').css('display','none');
$('#channel').css('display','none');
$('#createTest').css('display','none');
$('#mcqTest').css('display','none');
$('#editMcq').css('display','none');
$('#courseUpload').css('display','none');
$('#liveVod').css('display','none');
$('#vod').css('display','none');
$('#tAnnouncements').css('display','none');
$('#sAnnouncements').css('display','none');
$('#studentMcq').css('display','none');
$('#questionsSet').css('display','none');
$('#studentResult').css('display','none');
$('#classReports').css('display','none');
$('#liveChannelView').css('display','none');
$('#liveVodView').css('display','none');
$.ajax({
url:'http://51.81.106.157/education_admin_api/vod.php',
headers: {
'Authorization':'${sessionScope.token}'
},
type:'POST',
data: {
'task' : 'get_vod_class'
},
success:function(json){
$('#vodExpand').css('display','block');
$('#vodExpand').empty();
for(var i=0; i<json.data.length;i++)
{
$('#vodExpand').append('<li class="nav-item dropdown">'+
'<a class="nav-link dropdown-toggle white_left_link" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-file-text icon_menu" aria-hidden="true"></i> VOD</a>'+
'<ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">'+
'<li class="dropdown"><a class="dropdown-item dropdown-toggle" id="navbarDropdownMenuLink2" onclick=subjectForVodClass('+json.data[i].id+') data-toggle="dropdown" data-target="#vodClassExpand" href="#"><i class="fa fa-language icon_menu" aria-hidden="true"></i>'+json.data[i].vod_class_name+'</a></li>'+
'<input type="hidden" id="vodClassId" value="'+json.data[i].id+'">'+
'<ul class="dropdown-menu" data-toggle="dropdown" id="vodClassExpand" style="display:none">'
);
}
//liveVodKK();
//dateTimePicker();
},
error:function(e){
console.log(e)
}
});
}
这是第二级
function subjectForVodClass(vodClassId){
$.ajax({
url:'http://51.81.106.157/education_admin_api/vod.php',
headers: {
'Authorization':'${sessionScope.token}'
},
type:'POST',
data: {
'task' : 'get_vod_class_subject',
'vod_class_id' : vodClassId
},
success:function(json){
$('#vodExpand').css('display','block');
//$('#vodExpand').empty();
$('#vodClassExpand').css('display','block');
$('#vodClassExpand').empty();
for(var i=0; i<json.data.length;i++)
{
//$('#vodExpand').append('<p><a href="#" class="white_left_link" onclick=viewVodKK("'+json.data[i].vod_source+'","'+json.data[i].id+'","'+json.data[i].vod_name.replace(/\s/g, "")+'")><i class="fa fa-file-text icon_menu" aria-hidden="true"></i>'+json.data[i].vod_name +'</a></p>');
$('#vodClassExpand').append('<li class="dropdown"><a class="dropdown-item dropdown-toggle" id="navbarDropdownMenuLink3" onclick=topicForVodSubject('+json.data[i].id+') data-toggle="dropdown" data-target="#vodClassSubjectExpand" href="#"><i class="fa fa-language icon_menu" aria-hidden="true"></i>'+json.data[i].vod_subject_name+'</a></li>'+
'<input type="hidden" id="vodClassSubjectId" value="'+json.data[i].id+'">'+
'<ul class="dropdown-menu" id="vodClassSubjectExpand" style="display:none">'
);
//topicForVodSubject();
//subjectForVodClass(vodClassId);
}
//dateTimePicker();
},
error:function(e){
console.log(e)
}
});
}
这是第三级
function topicForVodSubject(vodSubjectId){
$.ajax({
url:'http://51.81.106.157/education_admin_api/vod.php',
headers: {
'Authorization':'${sessionScope.token}'
},
type:'POST',
data: {
'task' : 'get_vod_class_subject_topic',
'vod_subject_id' : vodSubjectId
},
success:function(json){
$('#vodExpand').css('display','block');
//$('#vodExpand').empty();
$('#vodClassExpand').css('display','block');
//$('#vodClassExpand').empty();
$('#vodClassSubjectExpand').css('display','block');
$('#vodClassSubjectExpand').empty();
for(var i=0; i<json.data.length;i++)
{
$('#vodClassSubjectExpand').append('<li><a class="dropdown-item" id="viewVodKK" href="#" onclick=viewVodKK("'+json.data[i].vod_topic_source+'")><i class="fa fa-video-camera icon_menu" aria-hidden="true"></i>'+json.data[i].vod_topic_name+'</a></li>'+
'</ul>'+
'</ul>'+
'</ul>'+
'</li>'
);
//topicForVodSubject(vodSubjectId);
}
//dateTimePicker();
},
error:function(e){
console.log(e)
}
});
}
所以每个级别都取决于前一个级别的值,即 id
现在的问题是每次我点击任何中间级别(如数学)时,整个子菜单都会折叠。我必须单击 vod 栏,然后它会被扩展,然后加载数据。所以重点是我不能在中级切换。我怎样才能解决这个问题?欢迎任何其他 javascript 或 jquery 解决方案谢谢
解决方案
推荐阅读
- excel - 将单行(名称、开始日期、结束日期)转换为多行
- selenium - 如何使用 Selenium IDE 获取单击值
- php - 如何使用 PHP 通过 id 在 MySQL 表中获取最新元素
- php - 如何在具有 PERL 模式的 PHP 上计算校验和
- python - 单个单词具有多个类别特征的词嵌入
- c# - Graph-API /v1.0/Teams/id 被阻止
- angular - 如何应用文本装饰:单击角度复选框时的行彻底
- halide - Halide 如何应用区间分析?
- r - R:计算组子集的 RMS
- python - 在 Robot Framework 中导入自定义测试库