Самый простой способ - это реорганизовать ваш код, чтобы удалить регистрацию обработчика click
, находящуюся вне функции.
Если это невозможно, вы можете объявить функцию отмены вне области действияваша forceAnnotation()
функция.И в вашей функции переопределите его, чтобы он был тем, что вам нужно.
var cancelClick = function(){};
function forceAnnotation(annotationNo,objectNo,clientNo, callBack) {
$('#forcedAnnotation').dialog( {
modal: true,
width: 385,
height: 370,
closeOnEscape: false,
open: function(event, ui) { jQuery('.ui-dialog-titlebar-close').hide(); }
});
cancelClick = function(){
callBack.onCancel();
$('#forcedAnnotation').dialog("close");
}
}
$('#cancelBtn').click(function() {
cancelClick();
});
$('#saveBtn').click(function(){
//make ajax call
});
Другие варианты: .one()
Прикрепите обработчик к событию дляэлементы.Обработчик выполняется не более одного раза для каждого элемента.
Или просто unbind()
обработчик щелчка каждый раз.
$('#cancelBtn').unbind("click").click(function() {
callBack.onCancel();
$('#forcedAnnotation').dialog("close")
});