我有一系列按钮,点击时会执行不同的功能。该功能检查用户是否已登录,如果是,则进行,如果不是,则显示具有登录/创建帐户功能的覆盖。
我想要做的是在登录后重新执行按钮点击,而无需用户重新点击它。
我现在有工作,但我很确定我所做的不是最佳做法,所以寻求有关如何改进的建议...
以下是我正在做的事情:设置一个全局变量“pending_request”,它存储要重新运行的函数,并在登录ajax请求的成功部分调用“eval(pending_request)”
其中一个按钮的示例:
jQuery('#maybe_button').click(function() {
pending_request = "jQuery('#maybe_button').click()"
var loggedin = get_login_status();
if (loggedin == true) {
rec_status("maybe");
}
});
success: function(data) {
if(data === "User not found"){
alert("Email or Password incorrect, please try again");
}else{
document.getElementById('loginscreen').style.display = 'none';
document.getElementById('locationover').style.display = 'none';
eval(pending_request);
pending_request = "";
}
}
答案 0 :(得分:0)
注册一个函数来处理点击,然后在没有eval()的情况下直接调用该函数。
jQuery('#maybe_button').on('click', myFunction)
单击按钮时执行myFunction
。现在你可以重新运行"每次您需要myFunction()
时的功能代码。
顺便说一句,因为您使用的是jQuery
,所以$('#loginscreen').hide()
$
是jQuery
自动定义的别名。
修改强>
请查看以下代码:
var pressedButton = null;
$('button1').on('click', function() {
if (!isLoggedIn()) {
pressedButton = $(this);
return;
}
// ...
});
并且,在您的成功处理程序中:
success: function() {
// ...
if (pressedButton) pressedButton.trigger('click');
// ...
}