Что с этим:
if (success = true) {
Вы понимаете, что устанавливает глобальную переменную "success" в true, правильно? Если вы хотите определить, равна ли переменная «success» значению true, используйте это:
if (success === true) {
Обратите внимание на 3 одинаковых знака.
Делая строгий перевод вашего кода, я получил такой результат:
//After everything is done, you want to execute this
function afterEmail(event) {
$(event.currentTarget).trigger(event.type);
}
//2nd level function
function collectEmail(event) {
console.log("Collecting email");
if (success === true){
afterEmail(event);
} else {
failFn();
}
}
//1st level function
function authentication(event) {
if (success === true) {
collectEmail(event);
} else {
failFn();
}
}
jQuery("a.callbacktesting").click(function (event) {
if (success === false) {
event.preventDefault();
event.stopImmediatePropagation();
authentication(event);
}
});
Если вы пытаетесь вызвать события DOM, вам нужно использовать jQuery.trigger или аналогичный. Мне нужно больше информации о вашей программе, чтобы помочь больше.