当用户点击“关闭”时,我如何获得关闭下拉菜单的代码;类别“;而它's已打开
How do I get my code to close the dropdown menu when the user clicks "Category" while it's already opened?
http://jsfiddle.net/83vtn5h7/
单击"类别"打开菜单。现在,如果您再次单击"类别",预期结果将是关闭菜单。相反,它关闭了,但很快又打开了!我在代码中找不到导致此错误的原因。请协助。
我认为在ActiveListItem上设置"slideToggle"(ActiveListItem="Category",除非选择了另一个项(将是正确的代码,但它不起作用。
HTML
<div id="navbarcontainer">
<ul class="navbar">
<li>
<span class="ActiveListItem">Category</span>
<ul>
<li><span>Music</span></li>
<li><span>Movie</span></li>
<li><span>Book</span></li>
<li><span>TV</span></li>
<li><span>Game</span></li>
<li><span>Activity</span></li>
<li><span>Misc</span></li>
</ul>
</li>
</ul>
</div>
CSS
#navbarcontainer{
vertical-align:top;
display:inline-block;
}
/* navbar */
ul.navbar {
border-style:solid;
border-width:1px;
border-color:#739FE0;
width:100px;
border-radius:4px;
height:33px;
}
ul.navbar li span.ActiveListItem {
background:url("http://i.imgur.com/p0qeihf.png") !important;
background-repeat:no-repeat !important;
background-size:10px 10px !important;
background-position:83px 13px !important;
color:white; !important;
background-color:#222 !important;
padding:7.5px 0px !important;
font-weight:normal !important;
border-radius:4px;
height:18px;
width:100px;
margin-bottom:1px;
}
ul.navbar li {
z-index:101;
position:relative;
width:100px;
}
ul.navbar li span {
display:block;
color:white;
padding:10px 5px;
text-decoration:none;
transition:all .1s ease-in;
}
ul.navbar li span:hover,
ul.navbar li:hover > span {
background:#739FE0;
color:#FFFFFF;
cursor:pointer;
}
ul.navbar li ul {
margin-top:0px;
background:#222;
display:none;
box-shadow:inset 0 0px 3px rgba(0,0,0,.6),
0 5px 10px rgba(0,0,0,.6);
}
ol, ul { list-style:outside none none; }
jQuery
var container = $('.navbar');
$(document).on('click', '.ActiveListItem', function(event) {
$('.navbar li ul').slideToggle(300);
$('.navbar > li:first-child > span').text("Category");
});
$(document).on('click', '.navbar ul span', function(event) {
$("#input1").focus();
$('.navbar li ul').slideUp(300);
$('.navbar > li:first-child > span').text($(this).text());
});
$(document).mouseup(function (e) {
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
$('.navbar li ul').slideUp(300);
}
});
只需在toogle事件之前添加stop()
:
$(document).on('click', '.ActiveListItem', function(event) {
$('.navbar li ul').stop().slideToggle(300);
$('.navbar > li:first-child > span').text("Category");
});
请查找FIDDLE更新
相关文章:
- 函数在页面加载时调用,而它只能在onclick上调用
- Javascript/jQuery - “无法调用未定义的方法'push'”,而它是定义的
- 我怎么能"加载更多“;数据按类别而不是全部放在一起
- 为什么广播在文档中被描述为标志,而它实际上是一个对象
- jQuery告诉我某个东西在数组中,而它不是't
- 无法在 IE 9 中传递此运算符的值,而它在 IE7 和 IE8 中工作正常
- Php 搜索表单显示结果时无需按搜索按钮,而它应该等到按下按钮才能显示它们
- 为什么使用 grunt-contrib-cssmin 会改变我的 css,而它应该只缩小它
- Javascript在一个页面上不起作用,而它在另一个页面上工作
- 谷歌地图说未定义的谷歌,而它在aspx页面上
- YouTube API v3 仅显示 5 个结果,而它应该显示 7 个结果
- 当JavaScript在html中时,它可以工作,而它不在html中;t
- JavaScript检查一个对象数组的结果是错误的,而它应该是真的
- 带有ACF的jQuery认为它有类,而它没有类't
- 异步序列的响应为false,而它应该为true
- 如何更改原始HTML,而它's仍在加载
- 单选按钮上的无提示验证被忽略,而它只适用于相同表单html中的文本字段
- JS测试输出显示在控制台中,而它应该'不要使用Chrome和IE
- parseInt返回NaN,而它应该是一个数字
- 当用户点击“关闭”时,我如何获得关闭下拉菜单的代码;类别“;而它's已打开