jQuery UI动画在动画开始之前执行回调

时间:2012-10-09 15:19:47

标签: jquery-ui animation backbone.js callback

我正在尝试在Backbone View的渲染操作期间使用一些动画,当我将基础模型的数据刷新到新记录时调用该操作。

SiteView = Backbone.View.extend({

    initialize: function () {
        this.model.bind('change', this.render, this);
    },

    render: function () {
        if (this.model.get('name')) {
            var callback = function (view) {
                view.$("#activesite_name").empty().append(view.model.get('name'));
                view.$("#activesite_desc").empty().append(view.model.get('description'));
                $(view.el).show('drop', { direction: 'down' }, 'slow').removeClass('hidden');
            };

            $(this.el).filter(':visible').fadeOut(500, callback(this));
        }
    }
});

但是,jQuery UI回调函数正在执行show操作之前执行,导致UI更新,然后在从一个模型选择刷新到另一个模型时消失。

如果元素被正确隐藏,我怎样才能调用回调?

1 个答案:

答案 0 :(得分:2)

试试这个:

render: function () {
    if (this.model.get('name')) {
        var view = this;
        var callback = function () {
            view.$("#activesite_name").empty().append(view.model.get('name'));
            view.$("#activesite_desc").empty().append(view.model.get('description'));
            view.$el.show('drop', { direction: 'down' }, 'slow').removeClass('hidden');
        };

        $(this.el).filter(':visible').fadeOut(500, callback);
    }
}