javascript - 使用 jquery.animate 多次调用后动画延迟

标签 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
    });
});

最佳答案

每次调用 initTemplateEditor 时,您都会使用此函数添加到 editorClose 点击链:

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

如果您在函数内添加一个alert,您会看到它第一次被调用一次,第二次被调用两次,依此类推。

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

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

关于javascript - 使用 jquery.animate 多次调用后动画延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26428517/

相关文章:

javascript - 通过 CSS3 过渡立即淡出和淡入

javascript - 如何在 jquery 中使用单个取消委托(delegate)方法删除多个事件委托(delegate)

javascript - 如果字段为空,则 Bootstrap 验证器滚动到第一个错误

JQuery 结合 $(document).ready 和 $ ('DropDown' ).change 声明

html - CSS 覆盖 DIV.class border-top

javascript - 需要双击复选框进行勾选

javascript - 从外部链接打开 Google map 信息窗口

javascript - 如何使用 Protractor 设置错误消息

css - 触摸时显示截断的文本

ruby-on-rails - @font-face,提供多个选项有什么意义?