我试图通过调用在单击事件中实现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
});
});
答案 0 :(得分:2)
每次拨打initTemplateEditor
时,您都会使用此功能添加到editorClose
点击链:
$("#editorClose").click(function () {
closeEditor();
});
如果你在函数中添加alert
,你会看到它第一次被调用,第二次被调用两次等等。
在click
函数之前添加这行代码,它应该可以解决您的问题:
$("#editorClose").unbind("click");