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

然后来回答你的问题,你的问题无非是想知道 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");

}

});