gpt4 book ai didi

javascript - 下拉 javascript 问题

转载 作者:行者123 更新时间:2023-11-28 17:59:52 25 4
gpt4 key购买 nike

你好,各位 stackoverflow 用户,

我似乎在尝试让下拉菜单正常工作时遇到了一些问题,我很确定是我的 javascript 无法正常工作。截至目前,我所拥有的 - 单击 <li> 时有效元开<ul>菜单并保持 Activity 状态,但是,您必须单击 <li>让它关闭并且 Activity 状态保持打开状态而不是像我也需要它那样进入非 Activity 状态......所以我手头的问题是我哪里出错了?我对 javascript 还是很陌生,非常感谢任何帮助。

要求:

1.) 点击激活并打开菜单

2.) 再次点击元素或页面上的任何地方,菜单关闭并进入非 Activity 状态。

这是我目前所拥有的: DEMO

HTML:

<div class="top_l">
<li>Nav <span>▼</span>

<ul> <a href="#">Title</a>
<a href="#">Title</a>
<a href="#">Title</a>

</ul>
</li>
</div>

JS:

$(document).ready(function () {
$('.top_l li').click(function () {
$('.top_l li').addClass('active');
$('.top_l li ul').slideToggle();
});
});

CSS:

.top_l {
width: 340px;
height: 60px;
float: left;
}
.top_l li {
height: 32px;
padding: 8px 12px 0 12px;
margin: 10px 0 0 6px;
border: 1px solid transparent;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
float: left;
-moz-transition: all .3s ease;
-webkit-transition: all .3s ease;
-ms-transition: all .3s ease;
transition: all .3s ease;
list-style: none;
color: #A4A4A4;
font: 20px Arial, Helvetica, sans-serif;
font-weight: bold;
font-variant: small-caps;
text-shadow: 2px 2px 3px #000;
position: relative;
cursor: pointer;
}
.top_l li span {
font: 14px Arial, Helvetica, sans-serif;
}
.top_l li:hover, .top_l li.active {
color: #FFF;
border: 1px solid #444;
}
.top_l li ul {
width: 120px;
height: 120px;
background: #222;
border: 1px solid #444;
-moz-box-shadow: inset 0 0.1em 0.4em 0.1em #000;
-webkit-box-shadow: inset 0 0.1em 0.4em 0.1em #000;
box-shadow: inset 0 0.1em 0.4em 0.1em #000;
display: none;
position: absolute;
top: 22px;
left: 4px;
}
.top_l li ul a {
width: 118px;
height: 28px;
padding: 10px 0 0 0;
background: red;
float: left;
color: #FFF;
font: 14px Arial, Helvetica, sans-serif;
font-weight: bold;
font-variant: small-caps;
text-shadow: 1px 1px 1px #000, -2px -2px 2px #000;
}

最佳答案

您永远不会在第二次点击时删除该类。

使用 .hasClass() 检查它是否处于 Activity 状态,如果是,则使用 .removeClass() 将其删除。

$('.top_l li').click(function () {
if($(this).hasClass('active')) {
$(this).removeClass('active');
} else {
$(this).addClass('active');
}
$('.top_l li ul').slideToggle();
});

编辑

请求的第二部分,当您单击页面上的任意位置时关闭列表。试试这个:

$(document).ready(function () {
$('.top_l ul').click(function (e) {
$('.top_l ul').addClass('active');
$('.top_l ul li').slideToggle();
});

$(document).click(function() {
$('.top_l ul li').slideUp();
});

$('.top_l ul,.top_l li').click(function(e) {
e.stopPropagation();
});
});

关于javascript - 下拉 javascript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665833/

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