jquery toggle(事件,事件)隐藏显示问题

时间:2011-05-28 14:51:21

标签: javascript jquery toggle slidetoggle

调用toggle需要很长时间才能加载,因此我尝试在加载时添加加载img,但是当.showall被激活时似乎没有加载{{1}在以下代码中

*

2 个答案:

答案 0 :(得分:1)

在回调中调用hide的另一个响应是正确的方法,但我想我会回答指出原因。

这里实际上存在多个问题。您的目的是显示#loading然后slideup,一旦完成,请隐藏#loading。但是,当调用slideup时,动画排队等待您的代码继续运行,代码不会等待slideup完成,然后继续前进到下一行。这就是您需要使用回调的原因,以便在hide完成后致电slideup

许多人忽略的另一件事是showhide在使用持续时间调用时是动画,因此是队列,但是,当没有持续时间传递时,这些调用不是动画,不会排队。因此,使用持续时间调用show然后立即调用hide没有持续时间将永远不会显示该元素。请参阅此说明:http://jsfiddle.net/zZHhm/请注意,您从未见过DIV2。

此外,传递给showhide的持续时间以毫秒为单位,因此hide(1)的持续时间为1毫秒(您可能会注意到这一点)。

答案 1 :(得分:0)

我承认,在使用带或不带参数的show / hide时会发生一些奇怪的事情。这个版本有效,但我不知道为什么没有参数的这些方法不能正常运行。

代码:(http://jsfiddle.net/z3HRQ/2/

$('#loading').hide(1);

$('.showall').toggle(
    function () {
        $('#loading').show(1);
        $('.toggle_container').slideUp(function () {
            $('#loading').hide();
        });
    },
    function () {
        $('#loading').show(1);
        $('.toggle_container').slideDown(function () {
            $('#loading').hide();
        });
    }
);