0

当我使用 slideDown 时,我的框只会出现,并且在我第一次单击链接时不会 slideDown,但是每次后续单击时,它都会按预期工作:

http://jsfiddle.net/3Gc6Q/

4

4 回答 4

3

box.removeClass("hide");必须在slideDown完成演示之后:http: //jsfiddle.net/3Gc6Q/9/

$(".link").click(function(e) {

    e.preventDefault();
    var box = $("#test");

    if (box.hasClass("hide")) {

        box.slideDown(function(){box.removeClass("hide");});
    }
    else {
        box.slideUp(function() {

            box.addClass("hide");

        });

    }


});
于 2012-04-10T13:24:40.580 回答
0

尝试使用slideToggle()

$(".link").click(function(e) {

    e.preventDefault();
    var box = $("#test");

    box.slideToggle('slow');
});​

这将大大简化您所拥有的内容。它还可以让你删除一些在“测试”中不必要的 CSS div

这是一个工作示例:http: //jsfiddle.net/zYAcB/1/

于 2012-04-10T13:24:13.693 回答
0

只需删除

box.removeClass("hide");

调用slideDown将使 div 可见。目前,当您删除“隐藏”类时,它将显示(因为它被该类的 css 隐藏),slideDown然后调用什么也不做。如果您不删除该类,它将按您的意愿显示。

或者,您可以在动画完成后删除该类:

box.slideDown(function() {
  box.removeClass("hide");
});
于 2012-04-10T13:24:22.123 回答
0

固定:http: //jsfiddle.net/3Gc6Q/8/

于 2012-04-10T13:24:23.247 回答