下拉列表问题
Drop down list issue
>Html
<a id="btn" class="btn" href="#."></a>
<div id="main-dropdown" class="hide">
<ul id="dropdown">
<li><a href="/">Back </a></li>
<li><a href="/foo">Foo </a></li>
<li><a href="/bar">Bar </a></li>
<li><a href="/baz">Baz </a></li>
<li><a href="/no">No Bar </a></li>
</ul>
</div>
Jquery
$(".btn").click(function(e) {
e.preventDefault();
$("#main-dropdown").removeClass('hide');
$("#main-dropdown").addClass('show');
return false;
});
$("#dropdown").mouseup(function() {
return false
});
$(document).mouseup(function(e) {
if($('#main-dropdown').hasClass('show')) {
$("#main-dropdown").removeClass('show');
$("#main-dropdown").addClass('hide');
return false;
}
$("#main-dropdown").removeClass("show");
$("#main-dropdown").addClass("hide");
});
问题:当我点击href(id = btn)时,会出现一个下拉菜单,但是当我再次单击该按钮时,应该隐藏这没有发生。我做错了哪里。
更改
$("#dropdown").mouseup(function() {
return false
});
自
$("#dropdown a").click(function() {
return false;
});
更多注意事项
- 从
mouseup
事件中删除return false;
,因为该事件没有默认操作。 - 无需同时调用
e.preventDefault();
和return false
的链接..一个应该就足够了。(如果你想停止冒泡,那么只使用return false
- 查看
.toggleClass()
简体版
$(".btn").click(function(e) {
e.preventDefault();
if($('#main-dropdown').hasClass('hide')){
$("#main-dropdown").toggleClass('hide show');
}
});
$("#dropdown a").click(function() {
return false;
});
$(document).mouseup(function(e) {
if($('#main-dropdown').hasClass('show')) {
$("#main-dropdown").toggleClass('hide show');
}
});
演示 http://jsfiddle.net/gaby/yjWNg/1/
更新以征求意见
事实上,我们应该在所有情况下处理点击事件这一事实有一个小错误。
$(".btn").click(function(e) {
e.preventDefault();
e.stopPropagation();
$("#main-dropdown").toggleClass('show hide');
});
$("#dropdown a").click(function() {
return false;
});
$(document).click(function(e) {
if($('#main-dropdown').hasClass('show')) {
$("#main-dropdown").toggleClass('hide show');
}
});
演示 http://jsfiddle.net/gaby/yjWNg/5/
我不确定你想做什么,但试试这个:http://jsbin.com/ehola3/edit
$(".btn").click(function(e) {
e.preventDefault();
if($("#main-dropdown").hasClass('hide')){
$("#main-dropdown").removeClass('hide');
$("#main-dropdown").addClass('show');
}
else{
$("#main-dropdown").removeClass('show');
$("#main-dropdown").addClass('hide');
}
return false;
});
类似的东西?
你真的应该使用 toggle() 来显示和隐藏内容。
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<button>Toggle</button>
<p style="display: none">Hello</p>
<script>
$("button").click(function () {
$("p").toggle("show");
});
</script>
</body>
</html>
您可以使用
toggleClass 来切换该hide
类
$(".btn").click(function(e) {
e.preventDefault();
$("#main-dropdown").toggleClass('hide');
});
工作示例:这里
.HTML:
<a href="#" class="btn">Show/Hide</a>
<div id="main-dropdown" class="hide">
<ul id="dropdown">
<li><a href="/">Back </a></li>
<li><a href="/foo">Foo </a></li>
<li><a href="/bar">Bar </a></li>
<li><a href="/baz">Baz </a></li>
<li><a href="/no">No Bar </a></li>
</ul>
</div>
JQUERY:
$(".btn").click(function(e) {
e.preventDefault();
$("#main-dropdown").toggleClass('hide');
});
.CSS:
.hide {display: none;}
相关文章:
- jQuery,引导程序下拉列表问题
- 我正试图获得一个带有复选框的多选下拉列表,在填充项目和获得所有选中的工作时遇到了一些问题
- 面临从模型中为下拉列表设置值的问题
- JQuery Mobile自定义下拉列表问题
- MVC中选择下拉列表的设置值出现问题
- ASP.NET MVC级联下拉列表列出Javascript问题
- jQuery Date 下拉列表的问题
- 引导下拉列表问题.(下拉列表和下拉列表保持下拉列表)
- 常见问题下拉列表 - 单击时文本颜色已更改
- 下拉列表问题在选择第一个后丢失值“0”
- Codeigniter/jQuery:将值从选择下拉列表提取到数据表中时出现问题
- 在引导程序 3 按钮下拉列表中添加滑动功能时出现问题
- 来自 JavaScript 问题的 ASP 下拉列表动态值
- 容器导航下拉列表的单击问题(需要双击才能下拉)
- jquery-selectize.js更改了下拉列表标识问题
- jquery下拉列表和发布到SQL数据库问题
- 通过Javascript问题更改下拉列表中的选项
- jQuery $.attr() 问题与选择(下拉列表)
- 选择“更改”和“ngModel问题”下拉列表
- 淘汰赛.js iPhone上的问题 - 下拉列表问题