2014-10-17 1 views
3

Я пытаюсь показать наложение по всей странице после нажатия на div, вызывая функцию, которая реализует jquery.animate в событии click , что происходит после нескольких щелчков, например, 4 или 5 попыток я начинаю отметить, существует задержка между нажатием на DIV и накладку, показывая себя и эта задержка становится увеличивается после каждого нажатияЗадержка анимации после нескольких вызовов с использованием jquery.animate

подробный код в jsfiddle и здесь является Java-код

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

 Смежные вопросы

  • Нет связанных вопросов^_^