如何避免隐藏不应该隐藏的部分
How to avoid hiding section that shouldn't hide?
这是我到目前为止所得到的演示。
我试图达到的是隐藏一个信息列表,以便在您单击它时显示。
这一切都包含在一个ul
列表中,其中ul
子项嵌套在其li
元素中,依此类推。
到目前为止,它做了它应该做的事情:当您单击li
父级时隐藏或显示ul
子项。
但问题是,当我单击已经在li
内的ul
内的li
时,此父ul
隐藏。
我怎样才能避免这种情况发生?有没有更好的方法
?我对js并不陌生,但我仍在学习,我想看看你们,伙计们,可以教我什么。
提前谢谢。
PD:如果不是问太多,我真的很感激一个纯粹的js答案,这样我就可以了解更多(:
您的问题源于事件传播。 在你的小提琴中发生的事情是,当孩子被点击时,事件也会传播给父母并隐藏整个事情。 这就是为什么你可能会注意到,第二次打开父级时,孩子也会打开。 以下是事件在不同浏览器中传播的不同方式的说明的链接。
对于除IE版本<9以外的所有内容。对小提琴的这种修改应该使您的代码正常工作。 唯一的区别是我正在阻止事件从您的孩子 li 传播到父 li,与
event.stopPropagation();
查看 Mozilla 的 event.stopPropagation 文档以获取更多信息。
<div class="clpsble-area">
<ul onclick="clpsble(event)">
<li class="collapser">Rand Stuff 1
<div class="clpsble-sec hide">
<ul>
<li class="collapser">Rand Stuff 1.1
<div class="clpsble-sec hide">
<ul>
<li>Rand Stuff 1.1.1</li>
<li class="collapser">Rand Stuff 1.1.2
<div class="clpsble-sec hide">
<ul>
<li>Rand Stuff 1.1.2.1</li>
<li>Rand Stuff 1.1.2.2</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li>Rand Stuff 1.2</li>
</ul>
</div>
</li>
<li>Rand Stuff 2</li>
</ul>
</div>
<script>
function clpsble(e){
for(el in e.target.children)el.style.display=el.style.display==='hidden'?'block:'hidden';
}
</script>
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 显示/隐藏不起作用
- Javascript代码添加了一些不应该存在的内容
- 潜水隐藏不起作用
- Javascript随机显示/隐藏不起作用
- 有没有任何情况下,一个方法不应该是原型方法
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- JavaScript - 输入按钮隐藏 - 不起作用
- Node.js Promise - 代码不应该等到 .then 完成()
- 跳跃运动:旋转轴 – 如果手静止不动,它不应该在 0 左右
- 如何在 html 和 javascript 中显示隐藏不确定的循环进度条
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- Javascript:尝试从多个没有匹配的数组中采样,在不应该的时候循环递增
- 这个正则表达式不应该工作吗?
- 脚本执行,但代码隐藏不执行
- 如何避免隐藏不应该隐藏的部分
- 高图重叠标签不应该被隐藏
- HTML隐藏输入不应该是可编辑的
- Chrome隐藏了不应该被影响的元素
- 键盘箭头导航不应该考虑隐藏的特殊字符