开发者社区> 问答> 正文

如何判断一段jquery代码已经执行过了?

下面这段代码使用了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>

展开
收起
小旋风柴进 2016-05-31 11:32:10 2127 0
1 条回答
写回答
取消 提交回答
  • 你的问题无非是想知道 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");
        }
    2019-07-17 19:21:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载