2014-10-17 66 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");