类后代扰乱事件
Class descendants disrupting events
我有一个简单的下拉菜单。单击.drop-down
时,子菜单将向下滑动。但是,如果单击 .drop-down
的任何子项,它将再次向上滑动。我只想要单击以滑动菜单的.drop-down
,而不是它的后代。
这是在行动:http://jsfiddle.net/tmyie/uXn5k/2/
<ul>
<li class="drop-down">
<a href="#"> Main </a>
<ul class="sub-menu">
<li><a href="#">Sub</a> </li>
<li><a href="#">Sub</a> </li>
<li><a href="#">Sub</a> </li>
</ul>
</li>
<li><a href="#">Main</a> </li>
<li><a href="#">Main</a> </li>
<li><a href="#">Main</a> </li>
<li><a href="#">Main</a> </li>
</ul>
jQuery
$( ".drop-down" ).click(function() {
$('.sub-menu').slideToggle();
});
$('.drop-down').fadeTo('slow', 0.3);
http://jsfiddle.net/tmyie/uXn5k/2/
专门针对a
$( ".drop-down>a" ).click(function() {
$('.sub-menu').slideToggle();
});
$('.drop-down').fadeTo('slow', 0.3);
或者,只需将类从li
移动到a
<ul>
<li>
<a href="#" class="drop-down"> Main </a>
<ul class="sub-menu">
<li><a href="#">Sub</a> </li>
<li><a href="#">Sub</a> </li>
<li><a href="#">Sub</a> </li>
</ul></li>
<li><a href="#">Main</a> </li>
<li><a href="#">Main</a> </li>
<li><a href="#">Main</a> </li>
<li><a href="#">Main</a> </li>
</ul>
编辑:
顺便说一下,使用此脚本会遇到多个下拉列表的麻烦。请考虑进行以下更改:
$( ".drop-down>a" ).on("click", function() {
$(this).siblings('.sub-menu').slideToggle();
});
$('.drop-down').fadeTo('slow', 0.3);
http://jsfiddle.net/uXn5k/6/
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- 我可以让事件在发起者和后代之间传播吗
- 类后代扰乱事件
- 在jQuery中向后代元素添加事件的更好方法是什么?