为什么我的div没有慢慢隐藏?

时间:2016-08-23 13:17:30

标签: javascript jquery

我有一个div包含一个包裹在div中的表,所以父子关系,我在点击文本标题时显示和隐藏div(表格显示:最初隐藏)。我的逻辑工作,我可以让表显示和隐藏点击,但是当我传递隐藏的毫秒值时,表仍然会立即消失。这是我的结构。

var ctdown = false;
jQuery(".table-dropdown").click(function () {
    var table_height = $(".table-dropdown div").show().height()+20;
    $(".table-dropdown div").hide();
    if (ctdown) {
        jQuery(this).animate({
            height: "20px"
        }, 500, function () {
            $(".table-dropdown div").hide(1000000);
        });
    }
    else {
        jQuery(this).animate({
            height: table_height
        }, 500, function () {

        });
        jQuery(".table-dropdown div").show();
    }
    ctdown = !ctdown;
});

我输入100000只是为了测试它是否真的在做任何事情,而事实并非如此。有什么建议?这里有一些基本的原则吗?谢谢!

UPDATE! 我从帖子中的标记答案中得出了答案,而另一位成员的答案因某种原因被删除了。这是我的最终解决方案。感谢所有帮助的人,非常感谢!

var ctdown = false;
$(".table-dropdown").click(function () {
if (ctdown) {
    $(this).animate({
        height: "20px"
    }, 500, function () {
        $("div", this).hide().fadeOut(500);
    });
}
else {
    var table_height = $("div", this).show().height()+20;
    $("div", this).hide();
    $(this).animate({
        height: table_height
    }, 500, function () {

    });
    $("div", this).show();
}
ctdown = !ctdown;
});

2 个答案:

答案 0 :(得分:3)

您可以使用fadeInfadeOut

在您的代码中,这可能是:

function fill () {
    var array = [];
    for (var index = 0, number = arguments[index][0];
      index < arguments.length && number <= arguments[index][1];
      index++ && number++) {
        array.push(number);
    }
    return array;
};

/* Use */
var keys = fill([1, 10], [32, 34]);

/* Output */
[1, 1]

答案 1 :(得分:2)

您是否尝试删除隐藏此块中div的行?

var table_height = $(".table-dropdown div").show().height()+20;
$(".table-dropdown div").hide();

我已经测试过这个.hide会隐藏div并忽略你的第二个.hide()

编辑1 - 添加的示例:https://jsfiddle.net/9eoq22ts/9/