Рассматривали ли вы использовать что-то вроде:
function wizardValidator(successCallback, failureCallback) {
return function() {
// Validating step's form data here;
if (wasValid && successCallback) {
successCallback();
}
else if (! wasValid && failureCallback) {
failureCallback();
}
return wasValid;
};
}
$(wizard).bind('validatingStepValues', wizardValidator(validReturnCallback, invalidReturnCallback));
Это требует, чтобы вы знали обратные вызовы, которые вы хотите использовать во время привязки прослушивателя событий.Если вы хотите использовать разные функции обратного вызова в разное время, вы можете определить дополнительные типы событий, например:
$(wizard).bind('validatingStep2Values', wizardValidator(validStep2ReturnCallback, invalidStep2ReturnCallback));
$(wizard).bind('validatingStep3Values', wizardValidator(validStep3ReturnCallback, invalidStep3ReturnCallback));
Альтернативно, события, которые вы создаете, вызывая trigger()
, распространяются вверх по иерархии DOM.Возвращая false
обработчик события отменяет это распространение.Таким образом, вы можете связать желаемую функцию обратного вызова в качестве прослушивателя событий на родительском узле вашего мастера.Однако это ничего не сделает для того, чтобы ваш обратный вызов был выполнен.