2014-10-17 58 views
3

我试图通过在点击事件中调用实现jquery.animate的函数单击div后在整个页面上显示覆盖图 多次点击后发生的情况如4或5次尝试我开始注意,点击div和覆盖脱颖而出之间的延迟,这延迟后,每点击使用jquery.animate多次调用后的动画延迟

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

回答

2

得到提高每次您拨打initTemplateEditor时,您都会加入ËeditorClose点击链具有这种功能:

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

如果添加alert在函数内部,你会看到它被称为一次是第一次,第二次两次,等

添加此行代码之前,click功能,它应该解决您的问题:

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