点击li ,父辈出现; 子级,子辈不出现. prevUntil ---> 前面多个, 截止到 截止元素 , prev([expr]) --> 前面一个.


要求:
1. 点击第一级 [1知识点] 的时候, [1知识点] 前有 圆圈.
点击 第二级 [1-1知识点, 1-2知识点, 1-3知识点] 时 , [1知识点]出现 圆圈.
2. 点击 第一级[2知识点] 或者 第二级[2-1知识点, 2-2知识点]的时候, [2知识点] 出现圆圈, [1知识点] 前 圆圈 隐藏.
---------------------------------------------------------------------------
html:
<ul>
<li date-level="0" onclick="changeDetails(1, this)">
<span class="circleChose hide">1</span>
<span class="rightListContent">1知识点</span>
</li>
<li date-level="1" onclick="changeDetails(2, this)">
<span class="rightListContentSub">1-1知识点</span>
</li>
<li date-level="1" onclick="changeDetails(3, this)">
<span class="rightListContentSub">1-2知识点</span>
</li>
<li date-level="1" onclick="changeDetails(4, this)">
<span class="rightListContentSub">1-3知识点</span>
</li>
<li date-level="1" onclick="changeDetails(8, this)">
<span class="rightListContentSub">1-4知识点</span>
</li>
<li date-level="0" onclick="changeDetails(5, this)">
<span class="circleChose">2</span>
<span class="rightListContent">2知识点</span>
</li>
<li date-level="1" onclick="changeDetails(6, this)">
<span class="rightListContentSub">2-1知识点</span>
</li>
<li date-level="1" onclick="changeDetails(7, this)">
<span class="rightListContentSub">2-2知识点</span>
</li>
</ul>
JavaScript:
function changeDetails(knowledgeId, node)
{
// console.log($(node).attr('date-level')); //判断点击的是一级 还是二级.
if ($(node).attr('date-level') == 0) {
//显示当前节点
if ($(node).find('.circleChose').hasClass('hide')) {
$(node).find('.circleChose').removeClass('hide');
} //隐藏其他节点:
$(node).siblings('li').each(function(index, el) {
if (!$(this).find('.circleChose').hasClass('hide')) {
$(this).find('.circleChose').addClass('hide');
}
});
} else {
//二级:
$(node).prevUntil("li[date-level = 0]");
// console.log($(node).prevUntil("li[date-level = 0]"));
//找到直到 data-level = 0 为止的所有选项.
var tempList = $(node).prevUntil("li[date-level = 0]"); if (tempList.length == 0) {
//当前是第一个子节点:
//显示当前节点
// console.log('222');
if ($(node).prev().find('.circleChose').hasClass('hide')) {
$(node).prev().find('.circleChose').removeClass('hide');
} //隐藏其他节点:
$(node).prev().siblings('li').each(function(index, el) {
if (!$(this).find('.circleChose').hasClass('hide')) {
$(this).find('.circleChose').addClass('hide');
}
});
} else {
// tempList.last().prev()
//显示当前节点
// console.log('333');
if (tempList.last().prev().find('.circleChose').hasClass('hide')) {
tempList.last().prev().find('.circleChose').removeClass('hide');
} //隐藏其他节点:
tempList.last().prev().siblings('li').each(function(index, el) {
if (!$(this).find('.circleChose').hasClass('hide')) {
$(this).find('.circleChose').addClass('hide');
}
}); }
} getDetails(knowledgeId);
}
对于 prevUtil(). : 查找 之前 的所有同辈 元素 , 不包括 自己 和 截止元素.
1 , 1-1, 1-2, 1-3, 1-4, 1-5, 2, 2-1, 2-2 : 注意: 1在最上边, 2 在最下面. 它们都是同级的.
如果是
1-1 .prevUntil(1) ----> 返回的是空的. length 为 0 .
1-2. prevUntil(1) ----> [1-1]
1-3 . prevUntil(1) ------> [1-2, 1-1] 注意 查找的顺序 , 此时 1-2 是第一个.
1-5. prevUntil(1) -------> [1-4, 1-3, 1-2, 1-1] 注意: 1-4 是第一个, 因为 从底部 向上查找.
2-1 . prevUntil(2) -----> 返回的是空的 : lenth 是 0
2-2 .prevUntil(2) ------> [2-1]
点击li ,父辈出现; 子级,子辈不出现. prevUntil ---> 前面多个, 截止到 截止元素 , prev([expr]) --> 前面一个.的更多相关文章
- 在eclipse中建立子级源码文件夹
在eclipse中建立子级源码文件夹 右键点击项目 ---->new ---->source folder--->输入 src/main --->勾选update exclu ...
- WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象
原文:WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象 简介 本文将完整叙述我利用VisualTreeHelper实现题述功能的全部过程,想直接看函数实现的朋友可以跳到函数 ...
- vue结合Ant Design实现后台系统的权限分配(支持无限子级嵌套)
最近公司的业务需要,要做一个后台管理系统的管理系统类似于这样子 功能需求如下: 左边是权限菜单,右边对应的是具体权限. 1.父级权限菜单选中,父级权限菜单的权限包括其中所有子级权限菜单的权限也要选中, ...
- jquery获取父,同,子级元素
一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div"><a id="href_fir& ...
- 让一个父级div根据子级div高度而自适应高度
需求是点击上传的时候进行子级div高度不定,相对来说父级div高度也不能固定,把元素都设置成普通标准流,然后样式可以使用margin内边距或者padding外边距来进行调节 放上代码供参考: .opu ...
- C#中怎样在ToolStripMenuItem下再添加子级菜单
场景 在右键菜单ContextMenuStrip下添加子菜单选项可以通过 ContextMenuStrip menuStrip ToolStripMenuItem mnuChartOption = n ...
- Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)
Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...
- [Unity3D]巧妙利用父级子级实现Camera场景平面漫游
本文系作者原创,转载请注明出处 入门级的笔者想了一上午才搞懂那个欧拉角的Camera旋转..=.= 在调试场景的时候,每次都本能的按下W想前进,但是这是不可能的(呵呵) 于是便心血来潮想顺便添加个Ke ...
- 子级与父级的margin合并的问题
子级加上了margin以后,发现其父级也移动了相应的margin值.外边距合并.换成padding;在父级上加overflow:hidden;
随机推荐
- appium自动化环境搭建(python语言开发)
简述 1.安装jdk,配置环境变量 2.安装AndroidSDK,配置环境变量 3.安装Python 4.安装Python集成开发环境PyCharm 5.安装node 6.安装appium服务端 7. ...
- CentOS7 安装PHP7的redis扩展:
phpredis-4.2.0.tar.gz:下载:wget https://github.com/phpredis/phpredis/archive/4.2.0.tar.gz $ tar -z ...
- Red and Black HDU - 1312
There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A ...
- 【洛谷p1060】开心的金明
(DP背包第一题,值得记录思路呀) 开心的金明[传送门] 洛谷算法标签: 01背包问题的思路分析见[总结]01背包问题 这道题显然是典型的01背包问题,首先我们显然可以由输入的第i个物体的价格v[i] ...
- 使用maven命令把jar包加入maven仓库
命令:mvn install:install-file -Dfile=D:\jar包路径xxxx.jar -DgroupId=根目录文件夹名字 -DartifactId=子目录文件夹 -Dversi ...
- CF-877E-线段树+哈希
http://codeforces.com/problemset/problem/877/E 给出一颗有根树,没个节点上有一个值0/1,有两种操作,一个是选中一个节点,对他所对应的那个子树上所有节点的 ...
- hdu-2865-polya+dp+矩阵+euler函数
Birthday Toy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- c# 操作文本文件
计算机在最初只支持ASCII编码,但是后来为了支持其他语言中的字符(比如汉字)以及一些特殊字符(比如€),就引入了Unicode字符集.基于Unicode字符集的编码方式有很多,比如UTF-7.UTF ...
- Oracle 11.2.0.4.0 Dataguard部署和日常维护(7) - Dataguard Flashback篇
1. 设置备库的闪回目录 show parameter db_recovery_file; NAME TYPE VALUE ------------------------------------ - ...
- Slony-I同步复制部署
本次测试环境 IP 10.189.102.118 10.189.100.195 10.189.100.226 PGHOME /usr/local/pgsql /usr/local/pgsql /usr ...