javascript - 单击时如何停止下拉菜单子(monad)项向上滑动

标签 javascript jquery css html

我试图制作一个下拉菜单,当点击时它会保持向下,但当点击下拉区域内的任何地方时,它不会向上滑动。只有在页面其他地方单击时它才会消失。

不过,我正在努力实现这一目标。你可以在这里看到我在做什么:

HTML

<nav id="moo">
<ul>
<li>Item 1 <i>o</i>
<div class="dropdown">
        <ul>
            <li>Item 2</li>
            <li>Item 3</li>
            <li>Item 4</li>
        </ul>
    </div>
</li>
<li>Item 1 <i>o</i>
    <div class="dropdown">
        <ul>
            <li>Item 7</li>
            <li>Item 8</li>
            <li>Item 9</li>
        </ul>
    </div>
</li>
</ul>
</nav>

CSS

ul { padding: 0px; margin: 0px; }
li { display: inline; }
nav li { position: relative; }
nav i { cursor: pointer; font-weight: bold; background-color: red;padding: 5px; }
.dropdown { display: none; position: absolute; border:1px solid #ccc; padding: 10px; }  
.dropdown li {
display: block;
}

脚本

$('nav li').click(function () {
var $childDropdown = $(this).find('.dropdown');

if ($childDropdown.is(':visible')) {
    $('.dropdown').slideUp(300);
} else {
    $('.dropdown').slideUp(300);
    $childDropdown.slideDown(300);
}
});

/* Anything that gets to the document
will hide the dropdown */
$(document).click(function(){
$(".dropdown").hide();
});

/* Clicks within the dropdown won't make
it past the dropdown itself */
$("nav").click(function(e){
e.stopPropagation();
});

这是 fiddle 版本:

http://jsfiddle.net/susannalarsen/buNq9/

最佳答案

您将需要使用事件目标属性并向上遍历其父元素以找出触发事件的元素。如果它是“.dropdown”类中的一个元素,则不应应用向上滑动,否则关闭下拉列表。

example

$('nav > ul > li').click(function (e) {
var $childDropdown = $(this).find('.dropdown');

if ($childDropdown.is(':visible')) {

    var target = $(e.target);
    if (!$(target).parents(".dropdown").length) {
        $('.dropdown').slideUp(300);
    }    

} ...

请注意,我更改了 $('nav > ul > li') 中的选择,这将仅应用于上层的 LI 元素。

关于javascript - 单击时如何停止下拉菜单子(monad)项向上滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22913161/

相关文章:

javascript - 无法在 'createObjectStore' 上执行 'IDBDatabase'

javascript - setInterval函数不停止而是无限运行

javascript - 另一个 AJAX 调用的 AJAX 按钮不起作用

javascript - jQuery .prop 停止执行而没有错误

javascript - 如何防止我的按钮 onclick 5 秒

javascript - 外部 Controller 指令中 Controller 的调用函数

javascript - 如何用 javascript 为 Phonegap 应用程序编写进度条

php - 提取所有具有特定规则的 CSS 规则集

html - 过渡不适用于 Firefox

html - 在 DIV 的顶部和底部对齐