当然,slideDown
和slideUp
不能满足您的需求。您说您希望它向左/向右,而不是向上/向下。
如果您在问题中添加了jquery-ui
标签,则表示正在使用jQuery UI,我建议使用nnnnnn的解决方案,使用jQuery UI的slide
效果。
如果不是:
假设菜单一开始可见(编辑:糟糕,我看到这不是一个有效的假设;请参阅下面的注释),如果您想要将其向左滑出,然后稍后再从左侧滑回来,您可以这样做:实时示例 | 实时源代码
$(document).ready(function() {
$('#showmenu').click(function() {
var $menu = $('.menu');
if ($menu.is(':visible')) {
$menu.animate({left: -($menu.outerWidth() + 10)}, function() {
$menu.hide();
});
}
else {
$menu.show().animate({left: 0});
}
});
});
你需要在菜单元素上添加position: relative
。
请注意,我用click
替换了你的toggle
,因为那种形式的toggle
已经从jQuery中删除了。
如果您想要隐藏菜单,可以调整上面的内容。基本上,在将其放到页面之外时,您需要知道元素的宽度。
这个版本不关心菜单最初是否可见:实时复制|实时源码
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id="showmenu">Click Here</div>
<div class="menu" style="display: none; position: relative;"><ul><li>Button1</li><li>Button2</li><li>Button3</li></ul></div>
<script>
$(document).ready(function() {
var first = true;
$('#showmenu').click(function() {
var $menu = $('.menu');
if ($menu.is(':visible')) {
$menu.animate({left: -($menu.outerWidth() + 10)}, function() {
$menu.hide();
});
}
else {
$menu.show().css("left", -($menu.outerWidth() + 10)).animate({left: 0});
}
});
});
</script>
</body>
</html>
.toggle()
方法在jQuery 1.9版本中被_删除_。 - nnnnnn