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)时会出现一个下拉菜单,但是当我再次单击该按钮时应该隐藏 这没有发生。我做错了。
答案 0 :(得分:0)
我不确定你想做什么,但试试这个:http://jsbin.com/ehola3/edit
答案 1 :(得分:0)
更改
$("#dropdown").mouseup(function() {
return false
});
到
$("#dropdown a").click(function() {
return false;
});
更多笔记
return false;
事件中删除mouseup
,因为该事件没有默认操作。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/
更新评论
我们应该在所有情况下处理click事件,这是一个小错误。
$(".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');
}
});
答案 2 :(得分:0)
$(".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;
});
类似的东西?
答案 3 :(得分:0)
您应该使用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>
答案 4 :(得分:0)
您可以使用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;}