1

我正在为 jQuery 编写一个通知插件。作为插件的一部分,通知可以设置为在一定时间后自动消失。出于某种原因,虽然它只是淡出并且slideUp不像我期望的那样。我究竟做错了什么?

$('#' + plugin.uniqID)
    .delay(plugin.settings['autoclose'])
    .queue(function () {
        $(this)
            .fadeOut({ duration: plugin.settings['speed'], queue: false })
            .slideUp(plugin.settings['speed']);
        });
4

3 回答 3

1

adeneo 是对的,您需要调用.dequeue()

http://jsbin.com/opiluy/1/edit

$('#' + plugin.uniqID)
    .delay(plugin.settings['autoclose'])
    .queue(function () {
        $(this)
            .fadeOut({ duration: plugin.settings['speed'], queue: false })
            .slideUp(plugin.settings['speed']);
        }).dequeue();
于 2012-11-02T16:33:39.850 回答
1

您只需要queue: false为两个动画调用指定。这将正常工作。

$('#' + plugin.uniqID)
.delay(plugin.settings['autoclose'])
.queue(function () {
    $(this)
        .fadeOut({ duration: plugin.settings['speed'], queue: false })
        .slideUp({ duration: plugin.settings['speed'], queue: false });
    });
于 2012-11-02T16:37:43.713 回答
1

作为替代建议,您能否仅使用 animate 并更改 animate 函数中的高度和不透明度?像这样:

$(this).animate({ height:"whateverheight", opacity:"whateveropacity" },whateverspeed);

于 2012-11-02T16:25:30.763 回答