当非登录用户点击给定按钮时,我想停止该事件,收集他的oauth,如果我没有它,则收集他的电子邮件,然后执行该事件。
我想在javascript中做所有事情,因为这会让事情变得更加简单。
这就是我执行它的方式,我有两个问题:
jQuery("a.callbacktesting").click(function(event){ if (success==false){ event.preventDefault(); event.stopImmediatePropagation(); authentication({endevent:event,followup:afterEmail},collectEmail, failFn); } }); //1st level function function authentication(params, successFn, failFn){ if (success=true){ successFn(params,params.followup,failFn); }else{ failFn(); } } //2nd level function function collectEmail(params, successFn, failFn){ console.log("Collecting email"); if (success=true){ successFn(params); }else{ failFn(); }; } //After everything is done, you want to execute this function afterEmail(params){ jele=$(params.endevent.currentTarget) action=params.endevent.type jele.trigger(action); }
答案 0 :(得分:1)
这是什么:
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或类似的东西。我需要有关您的计划的更多信息,以便提供更多帮助。
答案 1 :(得分:0)
考虑将click事件回调存储在变量中。当用户单击该按钮时,您的JS首先检查它是否经过身份验证。如果是,则执行回调。如果不是,则将回调作为参数传递给身份验证例程。验证例程成功后,它就可以执行回调。