下面这段代码使用了jquery的滑动效果,slideUp(),我想在div收起来之后,再点一次按钮,执行slideDown()
让div滑下来,该如何去做?
不用slideToggle()。
我的想法是判断一下div是否被收起来了,该如何去判断?谢谢
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$('#stop').click(function(){
$('#flip').slideUp('fast')
})
})
</script>
<style>
#flip
{
width:500px;
height:500px;
background-color:#e5eecc;
}
</style>
<button id="stop">sliding</button>
<div id="flip">Click to slide</div>
你的问题无非是想知道 DIV 的状态,是收起的还是展开的。那么只需要在完成 slideUp 之后赋予它一个状态标记就好。在 jQuery 中,赋予状态标记的办法很多,常见方法有3个
使用 $("#flip").data()
使用 $("#flip").attr()
使用 $("#flip").addClass() 设置和 $("#flip").is(".yourClassName")
判断
第3个通常在需要配合 CSS 设置样式时使用。
然后看文档,slideUp 的两种调用方式都提供了 complete 回调,所以可以在回调中设置状态。
$("#flip").slideUp("fast", function() {
$("#flip").addClass("up");
});
然后你的 click 事件可以写成
$("#stop").on("click", function() {
var $flip = $("#flip");
if ($flip.is(".up")) {
$flip.slideDown("fast", function() {
$flip.removeClass("up");
});
} else {
$flip.slideUp("fast", function() {
$flip.addClass("up");
});
}
});
当然也不可以不用 complete 回调,直接在开始之前就设置好
$("#stop").on("click", function() {
var $flip = $("#flip");
if ($flip.is(".up")) {
$flip.removeClass("up");
$flip.slideDown("fast");
} else {
$flip.addClass("up");
$flip.slideUp("fast");
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。