使用jquery.animate进行多次调用后延迟动画

时间:2014-10-17 15:35:04

标签: javascript jquery css animation delayed-execution

我试图通过调用在单击事件中实现jquery.animate的函数来单击div之后在整个页面上显示覆盖 几次点击之后发生了什么,比如4或5次尝试我开始注意到点击div和叠加显示之间有一个延迟,每次点击后这个延迟都会增加

jsfiddle中的详细代码,这里是javascript代码

function initTemplateEditor(params) {
if (typeof params === "undefined") {
    throw new Error("can't init the editor without params!");
}

var
openEditor = function () {
    $(params.templateEditor).animate({
        opacity: 1
    }, {
        duration: 350,
        start: function () {
            $(params.templateEditor).css({
                "display": "block",
                    "width": $(window).width() - 10,
                    "height": $(window).height() - 10
            });
        }
    });
},
closeEditor = function () {
    $(params.templateEditor).animate({
        opacity: 0
    }, 350, function () {
        $(this).css("display", "none");
    });
};
$("#editorClose").click(function () {
    closeEditor();
});
openEditor();
}

$(".template-box").click(function () {
    initTemplateEditor({
        templateEditor: "#templateEditor",
        template: this
    });
});

1 个答案:

答案 0 :(得分:2)

每次拨打initTemplateEditor时,您都会使用此功能添加到editorClose点击链:

$("#editorClose").click(function () {
    closeEditor();
});

如果你在函数中添加alert,你会看到它第一次被调用,第二次被调用两次等等。

click函数之前添加这行代码,它应该可以解决您的问题:

$("#editorClose").unbind("click");