- 更新 -
我有点愚蠢,子 UL 覆盖了父列表(不透明度淡出),所以我单击一次后无法单击组。哎呀!无论如何感谢帮助我的家伙!
jQuery 传播的问题是每个人都在努力解决的问题。但这是我的情况,我无处可修复(或者我可能很愚蠢,没有看正确的地方,或者我的 jQuery 技能还不够好,无法理解)。
基本情况是我有一些组,并且在组中有几个选项。当您单击其中一个组时,将弹出选项。但是,当我单击其中一个选项时,整个弹出活动再次触发,因为它是父母的孩子,所以他认出了孩子们所在的班级。
我的 HTML 如下所示:
<div id="buttons">
<ul>
<li class="group">Group 1
<ul>
<li class="link">Link</li>
</ul>
</li>
<li class="group">Group 2
<ul>
<li class="link">Link</li>
</ul>
</li>
<li class="group">Group 3
<ul>
<li class="link">Link</li>
</ul>
</li>
<li class="group">Group 4
<ul>
<li class="link">Link</li>
</ul>
</li>
</ul>
</div>
我想这看起来很简单,我想这没有什么问题。它只是嵌套在列表中的列表。
但是我的 jQuery 代码。它看起来像这样:
$(".group").click(function(event) {
// if ($(event.target).is('ul li ul li')) return false;
$(".group").children("ul").animate({top: 0, opacity: 0}, 200);
var liHeight = ($(this).children("ul").children("li").height())+20;
var totalOptions = $(this).children("ul").children("li").length;
var combinedHeight = totalOptions * liHeight;
var slideIn = -(16+combinedHeight) // formula doing math on slidedistance
$(this).children("ul").animate({
top: slideIn,
opacity: 1
}, 600);
/*
$(".link").click(function(event) {
event.stopPropagation();
});
*/
});
它的实际作用是:
- 将组子级重置为默认顶部位置
- 获取点击的组
- 获取目标组的总孩子 ul 的高度
- 为动画准备距离
- 触发动画
随之而来的是没有问题,并且所有工作都按照我的意愿进行,但是当我单击li
s 中的ul
s 时,它只会继续触发动画,这不是计划的一部分。
我注释掉了你可能已经注意到的 2 块代码。这是我在网上寻找答案相关问题时发现的两种控制传播的不同方法。两者都没有好结果。发生的情况是传播实际上停止了,但它也无法点击不同的组。
简而言之,这就是问题所在。我想我只需要添加一两行,但我就是想不出应该适合什么,几乎尝试了所有想到的东西。
此外,如果您找不到任何答案但对代码标记或其他内容有一些反馈,也欢迎(我是交互设计/网络开发的学生,所以我也很感激:))