gpt4 book ai didi

javascript - 基于 CSS/Javascript 的下拉菜单。 onclick 事件的问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:58:10 27 4
gpt4 key购买 nike

我在单击元素后获取 .hide() 菜单时遇到一些问题。

$(document).on("click", "div.dropdown", function() {
$(this).find("ul").show(0, function() {
$(this).find("li").click(function() {
var a = $(this).html();
$(this).parent().parent().find(".dropdown-title p").html(a);
$(this).parent().hide(); //Onclick won't hide the UL
});
$(this).mouseleave(function() {
$(this).hide();
});
});
return false;
});
div.dropdown {
margin: 0 20px 0 0;
float: left;
border-radius: 3px;
background: rgba(0, 0, 0, .1);
height: 50px;
line-height: 50px;
color: #999;
text-transform: uppercase;
position: relative;
}

div.dropdown div.dropdown-title {
padding: 0 20px;
display: inline-block;
cursor: pointer;
}

div.dropdown div.dropdown-title p {
margin: 0 20px 0 0;
float: left;
font-size: 12px;
}

div.dropdown div.dropdown-title span {
float: left;
}

div.dropdown ul {
position: absolute;
top: 50px;
left: 0;
width: 200px;
overflow-y: auto;
overflow-x: hidden;
border-radius: 0 0 3px 3px;
z-index: 1001;
border: 1px solid #ccc;
list-style-type: none;
padding: 0;
margin: 0;
}

div.dropdown ul li {
line-height: 32px;
background: #fff;
color: #999;
font-size: 12px;
white-space: nowrap;
text-transform: uppercase;
padding: 0 20px;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dropdown">
<div class="dropdown-title">
<p>Sort By</p>
<span><i class="fa fa-caret-down" aria-hidden="true"></i></span>
</div>
<ul style="display: none;">
<li>Option 1</li>
<li>Option 2</li>
<li>Option 3</li>
<li>Option 4</li>
<li>Option 5</li>
<li>Option 6</li>
<li>Option 7</li>
<li>Option 8</li>
</ul>
</div>

当您单击其中一个 li 时,我试图将下拉菜单(ul 元素)设置为 .hide()菜单中的元素,以及当您从 ulmouseleave 时。现在,只有 mouseleave 部分起作用,当您单击其中一个 li 元素时不起作用。我不确定我忽略了什么,所以如果您发现任何错误或问题,请告诉我。

Here's the link to my fiddle

最佳答案

当点击 li 时,事件传播到 ul,所以真正发生的是点击 li 关闭列表但 ul 上的“点击”再次打开它,您可以停止事件传播

$(document).on("click", "div.dropdown", function() {
$(this).find("ul").show(0, function() {
$(this).find("li").click(function(event) {
event.stopPropagation();
var a = $(this).html();
$(this).parent().parent().find(".dropdown-title p").html(a);
$(this).parent().hide(); //Onclick won't hide the UL
});
$(this).mouseleave(function() {
$(this).hide();
});
});
return false;
});

关于javascript - 基于 CSS/Javascript 的下拉菜单。 onclick 事件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com